一、题目描述
二、题目思路
- 方案一:首先想到哈希表,需要额外开辟空间
- 方案二:可以对字符数组进行排序,进行相等判断
- 对于进阶问题,哈希表是更好的解决办法, 可以存储大范围的字符
三、提交代码
- 方案一
class Solution {
public boolean isAnagram(String s, String t) {
if(s.length() != t.length()){
return false;
}
HashMap<Character,Integer> hashMap = new HashMap<>();
for(int i =0;i<s.length();i++){
hashMap.put(s.charAt(i),hashMap.getOrDefault(s.charAt(i),0)+1);
hashMap.put(t.charAt(i),hashMap.getOrDefault(t.charAt(i),0)-1);
}
for(int j:hashMap.values()){
if(j !=0){
return false;
}
}
return true;
}
}
- 方案二
class solution{
public boolean isAnagram(String s,String t){
if(s.length() != t.length()){
return false;
}
char[] schars = s.toCharArray();
char[] tchars = t.toCharArray();
Arrays.sort(schars);
Arrays.sort(tchars);
return Arrays.equals(schars,tchars);
}
}
四、存在的问题
- 方案一开辟了新的内存
- 方案二排序时调用了库函数,同时,
String的toCharArray()方法制作了一个字符串的拷贝,需要花费O(n)额外的空间
Arrays的sort()函数 equals()函数