哈希表--有效的字母異味詞 leetcode 242

題目

給定兩個(gè)字符串 s 和 t ,編寫一個(gè)函數(shù)來判斷 t 是否是 s 的字母異位詞。
示例 1:
輸入: s = "anagram", t = "nagaram"
輸出: true
示例 2:
輸入: s = "rat", t = "car"
輸出: false

說明:
你可以假設(shè)字符串只包含小寫字母。
進(jìn)階:
如果輸入字符串包含 unicode 字符怎么辦?你能否調(diào)整你的解法來應(yīng)對(duì)這種情況?

思路

哈希表

先遍歷一遍字符串s,將s中每個(gè)字符及其對(duì)應(yīng)的次數(shù)存入哈希表中,然后遍歷一遍字符串t,判斷是否存在字符串s中,不存在返回false,遍歷結(jié)束后判斷哈希表中是否有剩余,有返回False
時(shí)間復(fù)雜度:O(n) 遍歷字符串的時(shí)間
空間復(fù)雜度:O(n)

python
class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        sets = {}
        for c in s:
            if c in sets:
                sets[c] += 1
            else:
                sets[c] = 1
        
        for c in t:
            if c in sets:
                sets[c] -= 1
                if sets[c] == 0:
                    sets.pop(c)
            else:
                return False
        
        if len(sets) != 0:
            return False
        return True
c++
class Solution {
public:
    bool isAnagram(string s, string t) {
        if(s.size() != t.size()) return false;
        unordered_map<char, int> map;
        for(char c : s) map[c] ++;
        for(char c : t) 
            if(-- map[c] == -1) return false;
        return true;

    }
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容