题目描述:
给定两个字符串
s
和t
,编写一个函数来判断t
是否是s
的字母异位词。注意:若
s
和t
中每个字符出现的次数都相同,则称s
和t
互为字母异位词。示例 1:
输入: s = "anagram", t = "nagaram" 输出: true示例 2:
输入: s = "rat", t = "car" 输出: false提示:
1 <= s.length, t.length <= 5 * 104
s
和t
仅包含小写字母进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
思路 及Java代码
class Solution {
public boolean isAnagram(String s, String t) {
/***
* 思路1 字典解法 通过scii 字符串中所有字符串与 a 的位置距离作为index 出现频率作为 作为值
* 两个字符串遍历相减得到获取的结果
*/
int[] arr= new int[26];
//填充差值
for(int i=0;i<s.length();i++){
int tmp1=s.charAt(i)-'a';
arr[tmp1]++;
}
//
for(int j=0;j<t.length();j++){
int tmp2=t.charAt(j)-'a';
arr[tmp2]--;
}
//遍历数组 如果存在非0元素说明两值不是异位字符串
for(int k:arr){
if(k!=0){
return false;
}
}
return true;
}
}