题目描述:
标签:排序 哈希表
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
代码:
思路分析:
《方法一:排序》
1、首先判断字符串的长度是否相等,不等肯定不是异位词;
2、然后利用toCharArray()方法将字符串转为字符数组;利用Arrays.sort()对字符数组进行排序;
3、最后对两个排序后的字符数组Arrays.equals(s1,s2)进行比较。
《方法二:哈希表》
1、利用一个长度为26的数组来存储s字符串中26个字母出现的次数
2、在遍历t字符串,每出现一个对应的字母,相应位置上的次数-1
3、最后判断如果数组中有<0的数,则说明不是异位词
class Solution {
public boolean isAnagram(String s, String t) {
if(s.length() != t.length()){
return false;
}
char[] s1 = s.toCharArray();
char[] t1 = t.toCharArray();
Arrays.sort(s1);
Arrays.sort(t1);
return Arrays.equals(s1,t1);
}
}
class Solution {
public boolean isAnagram(String s, String t) {
if(s.length() != t.length()){
return false;
}
int[] table = new int[26];
for(int i = 0;i < s.length();i++){
table[s.charAt(i) - 'a']++;
}
for(int i = 0;i < t.length();i++){
table[t.charAt(i) - 'a']--;
if(table[t.charAt(i) - 'a'] < 0){
return false;
}
}
return true;
}
}