一.解法
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;
}
}