leetcode 242 Valid Anagram

2276 ワード

原題:Given two strings and t,write a function to determine ift is an anaggram 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つの単语をあげて、それからあなたにもう1つの単语をあげます.この2番目の単語が1番目の単語が順序を乱した結果かどうかを聞いてみましょう.
class Solution
{
    int has[27];
public:
    bool isAnagram(string s, string t)
    {
        if(s.size()!=t.size())
            return false;
        memset(has,0,sizeof(has));
        for(int i=0;i<s.size();i++)
            has[s[i]-'a'+1]++;
        for(int i=0;i<t.size();i++)
        {
            has[t[i]-'a'+1]--;
            if(has[t[i]-'a'+1]<0)
                return false;
        }
        for(int i=0;i<27;i++)
            if(has[i]!=0)
            return false;
        return true;
    }
};

2番目の単語が1番目に単語が乱れただけの結果であれば、使用するアルファベットとアルファベットの数は同じであるべきで、1つのhas表に使用したアルファベットの数を記録して、次の単語を判断すればよい.