242. 有效的字母异位词
难度简单305
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram" 输出: true
示例 2:
输入: s = "rat", t = "car" 输出: false
说明:
你可以假设字符串只包含小写字母。
进阶:
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
通过次数175,049提交次数277,945
思路解析:
1.时间复杂度O(n) HashMap;
2.排序比较
AC代码1:
class Solution {
public boolean isAnagram(String s, String t) {
int n=s.length();
if(n!=t.length())
return false;
HashMap<Character,Integer>mp=new HashMap<Character,Integer>();
for(int i=0;i<n;i++)
{
if(!mp.containsKey(s.charAt(i)))
mp.put(s.charAt(i),1);
else
mp.put(s.charAt(i),mp.get(s.charAt(i))+1);
}
for(int i=0;i<n;i++)
{
if(!mp.containsKey(t.charAt(i))||mp.get(t.charAt(i))<=0)
return false;
else
mp.put(t.charAt(i),mp.get(t.charAt(i))-1);
}
return true;
}
}
AC代码2:
class Solution {
public boolean isAnagram(String s, String t) {
int n=s.length();
if(n!=t.length())
return false;
char s1[]=s.toCharArray();
char t1[]=t.toCharArray();
Arrays.sort(s1);
Arrays.sort(t1);
for(int i=0;i<n;i++)
if(s1[i]!=t1[i])
return false;
return true;
}
}
再提一点:
Java的HashMap和String的API可以好好复习一下。