LeetCode简单题:242. 有效的字母异位词(Python,C++,Java)

一.解法

https://leetcode-cn.com/problems/valid-anagram/
要点:排序,哈希表
Python用了排序法,s 和 t 的长度不同提前返回,而如果t 是 s 的变位词,对两个字符串进行排序将会产生两个相同的字符串。
Java和C++用了26长度的数组代替哈希表,分别代表26个字母的个数,初始26个字母个数都为0,遍历s中所有字母,每个字母在数组相应元素的值加一,再遍历t中所有字母,每个字母在数组相应元素的值减一,最后如果这个数组26个元素都为0说明是异位词。

二.Python实现

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

三.C++实现

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实现

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;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容