Javascript 程序检查两个字符串是否互为 Anagram
编写一个函数来检查两个给定的字符串是否是彼此的字谜。一个字符串的变位词是另一个包含相同字符的字符串,只是字符的顺序可以不同。例如,“abcd”和“dabc”是彼此的字谜。
我们强烈建议您单击此处并进行练习,然后再继续使用解决方案。
方法一(使用排序):
- 对两个字符串进行排序
- 比较排序后的字符串
下面是上述思想的实现:
Javascript
Javascript
Javascript
输出:
The two strings are not anagram of each other
时间复杂度: O(nLogn)
方法2(计数字符):
此方法假定两个字符串中可能的字符集都很小。在下面的实现中,假设字符使用 8 位存储,可能有 256 个字符。
- 为两个字符串创建大小为 256 的计数数组。将计数数组中的所有值初始化为 0。
- 遍历两个字符串的每个字符并增加相应计数数组中的字符计数。
- 比较计数数组。如果两个计数数组相同,则返回 true。
下面是上述思想的实现:
Javascript
输出:
The two strings are anagram of each other
方法3(使用一个数组计算字符):
上述实现可以进一步只使用一个计数数组而不是两个。我们可以为 str1 中的字符递增 count 数组中的值,为 str2 中的字符递减。最后,如果所有计数值都是 0,那么这两个字符串是彼此的字谜。感谢Ace提出此优化建议。
Javascript
输出:
The two strings are anagram of each other
时间复杂度: O(n)
有关详细信息,请参阅关于检查两个字符串是否是彼此的字谜的完整文章!