有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
示例 1:
输入: s = “anagram”, t = “nagaram”
输出: true
示例 2:
输入: s = “rat”, t = “car”
输出: false
(上述题目来源于LeetCode)
解法一(使用标记数组)
class Solution {
public boolean isAnagram(String s, String t) {
//如果两个字符串长度不一样,直接返回false
if(s.length() != t.length()){
return false;
}else{
//先定义一个大小为26的整数数组,用来代表字符'a'-'z'
int []count = new int[26];
//循环s,并将相应的数组元素数值更新(加)
for(char ch:s.toCharArray()){
count[ch - 'a']++;
}
//循环t,并将相应的数组元素数值更新(减)
for(char ch:t.toCharArray()){
count[ch - 'a']--;
}
//循环数组,如果数组中有元素不等于0,返回false
for(int i:count){
if(i != 0){
return false;
}
}
}
return true;
}
}
解法二(数组排序后进行比较)
class Solution {
public boolean isAnagram(String s, String t) {
//将字符串转换为相应的数组
char []s1 = s.toCharArray();
char []t1 = t.toCharArray();
//如果两个数组长度不同,直接返回false
if(s1.length != t1.length){
return false;
}else{
//将两个数组排序
Arrays.sort(s1);
Arrays.sort(t1);
//使用Arrays工具类的equals方法比较两个排序好数组,如果两个数组
//元素一一相同,那么返回true
return Arrays.equals(s1,t1);
}
}
}