JavaScript 如何检查给定的字符串是否是另一个字符串的变位词

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程