题目描述
给定两个字符串 s
和 t
,编写一个函数来判断 t
是否是 s
的字母异位词。
样例
输入: s = "anagram", t = "nagaram"
输出: true
输入: s = "rat", t = "car"
输出: false
说明:
你可以假设字符串只包含小写字母。
进阶:
如果输入字符串包含 unicode
字符怎么办?你能否调整你的解法来应对这种情况?
算法分析
- 1、枚举两个字符串,计算出两个字符串每个字符分别出现的次数,分别存入到
a[]
数组和b[]
数组中 - 2、枚举
a[]
数组和b[]
数组,若存在某个字符个数不一致,则返回false
,否则返回true
时间复杂度 $O(n)$
Java 代码
class Solution {
public boolean isAnagram(String s, String t) {
if(s.length() != t.length()) return false;
int n = s.length();
int[] a = new int[26];
int[] b = new int[26];
for(int i = 0;i < n;i ++)
{
char c = s.charAt(i);
a[c - 'a'] ++;
}
for(int i = 0;i < n;i ++)
{
char c = t.charAt(i);
b[c - 'a'] ++;
}
for(int i = 0;i < 26;i ++)
{
if(a[i] != b[i]) return false;
}
return true;
}
}