LeetCode簡單題:242. 有效的字母異位詞(Python,C++,Java)

一.解法

https://leetcode-cn.com/problems/valid-anagram/
要點:排序,哈希表
Python用了排序法,s 和 t 的長度不同提前返回,而如果t 是 s 的變位詞,對兩個字符串進行排序?qū)a(chǎn)生兩個相同的字符串。
Java和C++用了26長度的數(shù)組代替哈希表,分別代表26個字母的個數(shù),初始26個字母個數(shù)都為0,遍歷s中所有字母,每個字母在數(shù)組相應(yīng)元素的值加一,再遍歷t中所有字母,每個字母在數(shù)組相應(yīng)元素的值減一,最后如果這個數(shù)組26個元素都為0說明是異位詞。

二.Python實現(xiàn)

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
       
        if sorted(s) != sorted(t):
            return False
        return True

三.C++實現(xiàn)

class Solution {
public:
    bool isAnagram(string s, string t) {
        if(s.size()!=t.size()) return false;
        int length=s.size();
        int cmp[26]={0}; 
        for(int i=0;i<length;i++)
        {   
                cmp[s[i]-'a']++; 
                cmp[t[i]-'a']--; 
        }
        for(int i=0;i<26;i++)
            if(cmp[i]!=0) 
                return false;
        return true; 
    }
    
};

四.java實現(xiàn)

class Solution {
    public boolean isAnagram(String s, String t) {
        if(s.length() != t.length())
            return false;
        int[] alpha = new int[26];
        for(int i = 0; i< s.length(); i++) {
            alpha[s.charAt(i) - 'a'] ++;
            alpha[t.charAt(i) - 'a'] --;
        }
        for(int i=0;i<26;i++)
            if(alpha[i] != 0)
                return false;
        return true;
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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