题目描述
给定两个字符串s和t,写一个函数来确定t是否是s的回文词。
Example 1:
Input: s = "anagram", t = "nagaram"
Output: true
Example 2:
Input: s = "rat", t = "car"
Output: false
解决
1.数组 时间复杂度 O(N)
//使用数组
public boolean isAnagram(String s, String t) {
if(s.length() != t.length())
return false;
int[] arrayS = new int[26];
int[] arrayT = new int[26];
char[] charsS = s.toCharArray();
char[] charsT = t.toCharArray();
for (char c : charsS) {
arrayS[c - 'a'] ++;
}
for (char c : charsT) {
arrayT[c - 'a'] ++;
}
for(int i = 0;i < 26;i++){
if(arrayS[i] != arrayT[i])
return false;
}
return true;
}
2.hashmap 时间复杂度O(N) 但消耗的时间比数组会多很多
//使用hashmap
public boolean isAnagram(String s, String t) {
if(s.length() != t.length())
return false;
char[] charsS = s.toCharArray();
char[] charsT = t.toCharArray();
Map<Character,Integer> mapS = new HashMap<>();
Map<Character,Integer> mapT = new HashMap<>();
for(int i = 0;i < s.length();i ++){
if(mapS.containsKey(charsS[i])){
mapS.put(charsS[i],mapS.get(charsS[i])+1);
}else {
mapS.put(charsS[i],1);
}
}
for(int i = 0;i < t.length();i ++){
if(mapT.containsKey(charsT[i])){
mapT.put(charsT[i],mapT.get(charsT[i])+1);
}else {
mapT.put(charsT[i],1);
}
}
return mapS.equals(mapT);
}