Java实现查找两个字符串是否为异位词的函数
发布时间:2023-05-31 03:18:04
异位词是指由同样的字母,但是字母的顺序不同的两个单词。比如,“abc”和“bac”就是异位词。在字符串处理中,判断两个字符串是否为异位词是一个常见的需求。本文将分享如何使用Java实现查找两个字符串是否为异位词的函数。
1.思路
判断两个字符串是否为异位词,需要判断它们的字符种类和每个字符的数量是否相同。我们可以使用哈希表来记录每个字符出现的次数,如果两个字符串中每个字符的出现次数都相同,则它们为异位词。
具体步骤如下:
1. 建立两个哈希表,分别用于记录两个字符串中每个字符的出现次数。
2. 遍历 个字符串,对每个字符进行计数。
3. 遍历第二个字符串,对每个字符进行计数。
4. 遍历哈希表,比较两个哈希表中每个字符的出现次数是否相同,如果相同则说明两个字符串为异位词。
2.代码实现
以下是Java实现查找两个字符串是否为异位词的代码实现。
public static boolean isAnagram(String s, String t) {
// 判断两个字符串的长度是否相等
if(s.length() != t.length()) {
return false;
}
// 建立两个哈希表
int[] hashS = new int[26];
int[] hashT = new int[26];
// 遍历 个字符串,对每个字符进行计数
for(int i = 0; i < s.length(); i++) {
hashS[s.charAt(i) - 'a']++;
}
// 遍历第二个字符串,对每个字符进行计数
for(int i = 0; i < t.length(); i++) {
hashT[t.charAt(i) - 'a']++;
}
// 比较两个哈希表中每个字符的出现次数是否相同
for(int i = 0; i < 26; i++) {
if(hashS[i] != hashT[i]) {
return false;
}
}
return true;
}
3.测试样例
为了验证我们的代码是否正确,我们需要准备一些测试用例。以下是一些测试用例,每一行是一组数据,其中分别是两个字符串是否为异位词、 个字符串和第二个字符串的值。
true ab ab true abc bac true anagram nagaram false ab aa false abc def false anagramm nagaram
4.测试结果
使用以上测试用例进行测试,我们得到了以下测试结果。
true true true false false false
由此可以看出,我们的代码实现了查找两个字符串是否为异位词的功能,并且测试结果正确。
5.总结
在字符串处理中,判断两个字符串是否为异位词是一个非常常见的需求。本文介绍了使用Java实现查找两个字符串是否为异位词的具体实现方法。首先使用哈希表记录每个字符出现的次数,然后比较两个哈希表中每个字符的出现次数是否相同即可。通过测试样例验证代码的正确性。
