首页 > 其他分享 >LeetCode.242 有效的字母异位词

LeetCode.242 有效的字母异位词

时间:2023-01-16 20:33:56浏览次数:43  
标签:false String int 异位 字母 record 数组 return LeetCode.242

1.题目:

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。


 2.代码实现:

方法一:基于排序

class Solution {
public boolean isAnagram(String s, String t) {
//判断字符串的长度是否相同,如果不同直接返回false
if(s.length()!=t.length()){
return false;
}
//把字符串变成字符储存在字符数组中
char[] c1 = s.toCharArray();
char[] c2 = t.toCharArray();

//把数组排序
Arrays.sort(c1);
Arrays.sort(c2);

//比较排序后是否相同,因为排序后如果是字母异位词的话就应该是一样的
return Arrays.equals(c1,c2);





}
}


方法二:基于中间记录数组 或 哈希表

class Solution {
public boolean isAnagram(String s, String t) {
//定义一个数组用来计数,注意数组类型是int类型的,范围26就行,刚好对应26个字母
int[] record = new int[26];
//遍历字符串
for(int i=0; i<s.length(); i++){
record[s.charAt(i) - 'a']++;//使数组中的字符对应的++,注意要先把字符串变成字符,比如是a那么相减为0,那么就是让数组的第一个元素由0变成1
}
for(int i=0; i<t.length(); i++){
record[t.charAt(i) - 'a']--;
}
for(int i=0; i<record.length; i++){//遍历数组,判断数组的元素是否有非0的
if(record[i] != 0){
return false;//如果数组中有不是0的元素,那么就会返回false
}
}
return true;//最后说明数组中都是0,返回true

}
}
















标签:false,String,int,异位,字母,record,数组,return,LeetCode.242
From: https://blog.51cto.com/u_15806469/6010784

相关文章