问题
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
字母异位词:用的字母一样(相同种类和个数),不过顺序不同
aba aab是 aab ab不是
例子
思路
- 方法1
map
- 方法2
数组, s负责在对应位置增加,t 负责在对应位置减少
代码
//方法1
class Solution {
public boolean isAnagram(String s, String t) {
if(s.length()!=t.length()) return false;
Map<Character,Integer> map1=new HashMap<>();
Map<Character,Integer> map2=new HashMap<>();
for(int i=0; i<s.length(); i++) {
map1.put(s.charAt(i),map1.getOrDefault(s.charAt(i),0)+1);
}
for(int i=0; i<t.length(); i++) {
map2.put(t.charAt(i),map2.getOrDefault(t.charAt(i),0)+1);
}
boolean res = true;
for(Character c:map1.keySet()) {
if(!map1.getOrDefault(c,0).equals(map2.getOrDefault(c,0))){
res=false;
break;
}
}
return res;
}
}
//方法2
class Solution {
public boolean isAnagram(String s, String t) {
if(s.length()!=t.length()) return false;
int[] arr = new int[26];
for(int i=0; i<s.length(); i++) {
arr[s.charAt(i)-'a']+=1;
arr[t.charAt(i)-'a']-=1;
}
boolean res = true;
for(int n:arr)
if (n!=0) {
res=false;
break;
}
return res;
}
}