JavaScript回文串查找函数


本题的目标是创建一个JavaScript函数来判断给定的字符串是否为回文串。要解决这个问题,首先需要简单地理解问题。

理解题意

输入一个字符串,我们的主要目标是检查该字符串是否为回文串。如果是回文串,则返回true;否则返回false。

什么是回文?

题目中用到了“回文”这个词!让我们先理解这个词的意思。回文是指反转后看起来相同的字符串。例如,字符串“MADAM”,反转后仍然是“MADAM”,与输入字符串相同。这就是所谓的回文。

问题的逻辑

我们将创建一个函数来完成这项任务。函数的输入是一个字符串。我们需要检查该字符串是否为回文串。首先,我们将字符串转换为小写,并删除字符串中的所有其他字符以获得正确的输出。然后,我们将使用JavaScript的reverse方法遍历字符串,并检查该字符串是否与输入字符串相同。如果这两个字符串相同,我们将返回true,否则返回false。此函数指示该字符串是否为回文串。

算法

步骤1 - 声明一个名为isPalindrome的函数,该函数使用字符串参数。

步骤2 - 将给定的字符串转换为小写以获得所需的结果。并删除字符串中的多余字符和空格。

步骤3 - 使用reverse函数反转字符串。

步骤4 - 检查两个字符串是否相同。

步骤5 - 返回true或false结果。

算法代码

function isPalindrome(str) {
   // convert the string to lowercase and remove non-alphanumeric characters
   str = str.toLowerCase().replace(/[^a-z0-9]/g, '');
    
   // reverse the string and compare with the original
   return str === str.split('').reverse().join('');
}
const str = "Level";
const str1 = "Hello Javascript";
const str2 = "Wow";
console.log(isPalindrome(str))
console.log(isPalindrome(str1))
 
//other way to show the output
const result = isPalindrome(str2);
 
if(result == true){
   console.log(str2, "is palindrome");
} else {
   console.log(str2, "is not Palindrome");
}

复杂度

该函数的时间复杂度为O(n),因为该方法对给定字符串中的每个字符都使用常数时间。其中n是字符串的长度。代码使用的空间复杂度为O(1),因为它以布尔值的形式显示结果。

结论

因此,上述创建的函数可用于查找给定字符串是否为回文串,时间复杂度为O(n)。我们基本上使用了一些内置方法来解决这个问题。

更新于:2023年5月18日

浏览量:136

开启你的职业生涯

完成课程获得认证

开始学习
广告