1. 程式人生 > 其它 >242.有效的字母異位詞

242.有效的字母異位詞

題目


給定兩個字串 s 和 t ,編寫一個函式來判斷 t 是否是 s 的字母異位詞。注意:若 s 和 t 中每個字元出現的次數都相同,則稱 s 和 t 互為字母異位詞。

示例1:
輸入: s = "anagram", t = "nagaram"
輸出: true

示例2:
輸入: s = "anagram", t = "nagaram"
輸出: true

解題思路


暴力排序

直接排完序再比較兩個字串是否相同

class Solution {
public:
    bool isAnagram(string s, string t) {
        if((int)s.size() != (int)t.size()) {
            return false;
        }
        sort(s.begin(), s.end());
        sort(t.begin(), t.end());
        return s == t;
    }
};
雜湊表
class Solution {
public:
    bool isAnagram(string s, string t) {
        if(s.length()!=t.length())return false;//如果兩個字串長度不等,直接返回false

        int length=s.length();
        int hashmap[26]={0};//建立一個對應26個字母的雜湊表,初始化為0
        for(int i=0;i<length;i++)
        {
            hashmap[s[i]-'a']++;//s負責加
            hashmap[t[i]-'a']--;//t負責減
        }
        for(int i=0;i<26;i++)
        {
            if(hashmap[i]!=0)return false;
        }
        return true;//若最後雜湊表所有的值為0則匹配成功
        
    }
};