给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
输入: s = "anagram", t = "nagaram" 输出: true
输入: s = "rat", t = "car" 输出: false
首先要理解题目,什么是异位词?根据示例,我们知道它们互相有相同的字母,但是字母的排序不一样,这就是异位词。所以可以采用哈希表来记录s和t的对应字母的数目,这才是本质。
那么就很简单了,用两次循环来生成简单的哈希数组,再比较哈希数组,这是一个比较容易理解的方法。
class Solution {
public boolean isAnagram(String s, String t) {
/*若均为空,则返回true*/
if( s == "" && t == "" )
{
return true;
}
char[] array_s = s.toCharArray();
char[] array_t = t.toCharArray();
int[] next_s = new int[26];
int[] next_t = new int[26];
/*生成next数组*/
for( int i = 0 ; i < s.length() ; i++ )
{
next_s[ array_s[i] - ‘a‘ ]+=1;
}
for( int i = 0 ; i < t.length() ; i++ )
{
next_t[ array_t[i] - ‘a‘ ]+=1;
}
/*比较next数组*/
for( int i = 0 ; i < 26 ; i++ )
{
if( next_s[i] != next_t[i] )
{
return false;
}
}
return true;
}
}
原文:https://www.cnblogs.com/modesty-boy/p/13602918.html