JavaScript 如何检查给定的字符串是否是另一个字符串的变位词
在本文中,我们将学习如何在JavaScript中检查给定的字符串是否是另一个字符串的变位词。在此之前,我们应该了解什么是变位词。
变位词是一个单词或句子,通常包含所有原始字母且仅出现一次,以便重新排列不同术语或短语的字母。以下是一些示例:
- evil = vile
- a gentleman = elegant man
- eleven plus two = twelve plus one
有多种方法可以比较一个字符串是否是另一个字符串的变位词:
- 使用 split()、sort() 和 join() 方法
- 使用 for 循环
方法1:使用 split()、sort() 和 join() 方法
在本文中,我们将使用内置函数如 split()、sort() 和 join() 来检查JavaScript中给定的字符串是否是另一个字符串的变位词。
示例:
function checkAnagram(a, b) {
// Not of same length, can't be Anagram
if (a.length !== b.length) {
return false;
}
// Inbuilt functions to rearrange the string
let str1 = a.split('').sort().join('');
let str2 = b.split('').sort().join('');
let result = (str1 === str2);
return result;
}
// Checking the output
console.log(checkAnagram('abc', 'cba'));
输出
true
方法2:使用 for循环
在本文中,我们将使用javascript for循环 来检查一个给定的字符串是否是另一个字符串的变位词。
示例 :
function checkAnagram(a, b) {
let array = {};
if (a === b) {
return true;
}
if (a.length !== b.length) {
return false;
}
let minCharCode = Math.min(getMinCharCode(a),
getMinCharCode(b));
for (let i = 0; i < a.length; i++) {
let res = a.charCodeAt(i) - minCharCode;
array[res] = (array[res] || 0) + 1;
}
for (let j = 0; j < b.length; j++) {
let res = b.charCodeAt(j) - minCharCode;
if (!array[res]) {
return false;
}
array[res]--;
}
return true;
}
function getMinCharCode(str) {
let minCharCode = Infinity;
for (let i = 0; i < str.length; i++) {
let charCode = str.charCodeAt(i);
if (charCode < minCharCode) {
minCharCode = charCode;
}
}
return minCharCode;
}
console.log(checkAnagram('abc', 'cba'));
输出
true
极客教程