242. 有效的字母异位词
目录
题目描述
思路
题解
题目描述
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若?s 和 t?中每个字符出现的次数都相同,则称?s 和 t?互为字母异位词。
示例?1:
输入: s = "anagram", t = "nagaram" 输出: true 示例 2:
输入: s = "rat", t = "car" 输出: false
思路
从另一个角度考虑,t 是 s 的异位词等价于「两个字符串中字符出现的种类和次数均相等」。由于字符串只包含 26个小写字母,因此我们可以维护一个长度为 26的频次数组 table,先遍历记录字符串 s 中字符出现的频次,然后遍历字符串 t,减去 table 中对应的频次,如果出现 table[i]<0,则说明 t包含一个不在 s 中的额外字符,返回 false 即可。
题解
class Solution{
public boolean isSucc(String s,String t){
// char []ss=s.toCharArray();
char []tt=t.toCharArray();
int[] arr=new int[26];
for(int i=0;i<s.length();i++){arr[s.charAt(i)-'a']++;}
for(int i=0;i<t.length();i++){arr[tt[i]-'a']--;}
for(int i=0;i<arr.length;i++){if(arr[i]!=0){return false;}}
return true;
}
}
执行用时:3 ms, 在所有?Java?提交中击败了74.05%的用户
内存消耗:38 MB, 在所有?Java?提交中击败了98.48%的用户
通过测试用例:36?/?36
|