【LeetCode】 242.Valid Anagram解法及び注釈


242. Valid Anagram
Total Accepted: 74033 Total Submissions: 178179 Difficulty: Easy
Given two strings s and t, write a function to determine if t is an anagram of s.
For example, s = "anagram", t = "nagaram", return true. s = "rat", t = "car", return false.
Note: You may assume the string contains only lowercase alphabets.
【分析】
この問題の特殊性に鑑みて、私たちは「ハッシュテーブル」のような思想を採用してこの問題を解決することができて、もし1つの文字列が別の文字列の並べ替え(Angram)であれば、この2つの文字列の長さは必ず等しくて、含まれている文字は必ず完全に同じです(順序だけが異なる可能性があります)、例えば、私たちは小文字のASCIIコードをキー値にすることができます.「ハッシュ・テーブル」を作成します.具体的な操作では、26文字(26小文字)の長さの整数配列で、26文字が1文字列に現れる回数を格納します.配列の下にkey、文字をi、ハッシュ関数はkey=f(i)=i-'a';*/【解法】
class Solution {
public:
    bool isAnagram(string s, string t) {
        
         if(s.size()!=t.size())return false;
		 if(s.size()==0&&t.size()==0)return true;
		 int Sum[26]={0,0,0};
		 for(int i=0;i<s.size();i++)
			 Sum[s[i]-'a']++;
		 for(int j=0;j<t.size();j++)
			 Sum[t[j]-'a']--;
		 for(int j=0;j<26;j++)
			 if(Sum[j]!=0)return false;
		 return true;
        
    }
};