JavaScript 检查字符串的变位词
在这个问题的陈述中,我们的目标是通过JavaScript功能来检查字符串的变位词。所以为了解决这个问题,首先我们需要以简单的方式理解问题。
理解问题陈述
我们给定一个字符串作为输入字符串,我们的主要目标是检查该字符串是否是一个变位词。如果是变位词,则返回true,否则返回false。
什么是变位词
在给定的问题陈述中使用了“变位词”这个词!让我们先理解这个词的含义。变位词是通过重新排列任何单词或句子的字母形成的单词。基本上可以说,如果两个单词具有相似的字母且长度相同,它们就被称为变位词。例如,我们有一个字符串“silent”,如果我们重新排列这个字符串并且重新排列后为“listen”,那么silent和listen具有相似的字母,并且具有相同的长度6。所以这就是所谓的字符串变位词。
给定问题的逻辑
对于代码,我们将首先清理给定的字符串,因为字符串也可能包含非单词字符,大写字母或正则表达式,所以将其清理并从字符串中删除。然后,我们将字符串拆分为字符数组。然后,我们将使用Javascript中的sort方法对它们进行排序。现在,我们将拥有排序后的字符,然后再次将它们合并成字符串。最后,我们将比较排序后的字符串以检查它们是否相等。如果它们相似,则它们是变位词。
步骤
步骤1 - 声明一个名为isAnagram的函数,该函数使用两个字符串参数。
步骤2 - 将给定字符串转换为小写,并从输入字符串中删除任何非字符,以获得所需和实际结果。
步骤3 - 在应用拆分、排序和连接方法后,检查两个字符串,这行代码将以布尔形式输出结果。
步骤4 - 返回结果为true或false。
代码
//function to find out anagram status
function isAnagram(str1, str2) {
// Remove any non-word characters and convert to lowercase
const remove1 = str1.replace(/[^\w]/g, "").toLowerCase();
const remove2 = str2.replace(/[^\w]/g, "").toLowerCase();
// Check if the sorted strings are equal
return remove1.split("").sort().join("") === remove2.split("").sort().join("");
}
const anagram1 = isAnagram("tutorials", "uttoslair");
const anagram2 = isAnagram("point", "heoll");
// example usage
console.log(anagram1);
console.log(anagram2);
复杂度
函数的时间复杂度是O(n log n),因为该方法使用了Javascript的sort方法来对字符串字符进行排序,其中n是字符串的大小。代码使用的空间复杂度为O(n),因为它存储了清理和排序后的新数组。
结论
所以上述创建的函数可以用来判断给定的字符串是否是字谜,时间复杂度为O(n log n)。我们主要使用了一些内置方法来解决这个问题。