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

四.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;
    }
}

你可能感兴趣的:(LeetCode简单题:242. 有效的字母异位词(Python,C++,Java))