JavaScript - 判断字符串是否为回文(检查标点符号)

javascriptweb developmentfront end technologyobject oriented programming更新于 2024/12/9 8:12:17

在给定的问题陈述中,我们必须判断字符串是否为回文,并且字符串还应包含标点符号,然后借助 Javascript 功能编写代码。

理解问题

当前的问题是探索如何借助 Javascript 确定给定字符串是否为回文。因此,让我们先看看什么是回文。回文是一个单词、短语、数字或字母序列,可以正向和反向阅读。例如:racecar 是一个回文字符串。

给定问题的逻辑

为了解决给定的问题,我们将首先创建一个函数来判断给定的字符串是否为回文。为了检查字符串是否为回文,同时忽略标点符号,我们可以先将给定的输入字符串转换为小写,以忽略大小写。然后,我们将借助正则表达式或字符串操作方法从给定的字符串中删除所有标点符号和空格。之后,我们将更新后的字符串与其反向字符串进行比较。如果它们相似,则我们将返回该字符串为回文。

算法

步骤 1:因为我们必须确定给定的字符串是否为回文。因此,为了完成此任务,我们将创建一个名为 isPalindrome 的函数,并在该函数中传递字符串参数作为 str。因此,对于此字符串,我们将检查回文条件。

步骤 2:创建函数后,我们将借助 toLowerCase 方法将给定的字符串转换为小写,然后将其分配给名为 lowerCaseStr 的新变量。

步骤 3:现在我们已经将字符串转换为小写,是时候借助正则表达式和字符串操作方法从给定的字符串中删除空格和标点符号了。之后,我们将其分配给另一个名为 modifiedStr 的变量。

步骤 4:在此步骤中,我们将借助 split、reverse 和 join 方法反转给定的字符串,然后将其分配给一个名为 reversedStr 的新变量。

步骤 5:由于我们已经将字符串转换为小写,并且反转了给定的字符串。现在,我们将借助 === 运算符将更新后的字符串与反转后的字符串进行比较。如果它们相等,则返回 true,否则返回 false。

示例

// 检查回文的函数
function isPalindrome(str) {
    const lowerCaseStr = str.toLowerCase();
    const modifiedStr = lowerCaseStr.replace(/[\W_]/g, '');
    const reversedStr = modifiedStr.split('').reverse().join('');
    
    return modifiedStr === reversedStr;
}
const inputString = "A man, a plan, a canal, Panama!";
console.log(isPalindrome(inputString));

输出

true

复杂度

查找给定输入字符串是否为回文的时间复杂度为 O(n),其中 n 是给定输入字符串的大小。由于我们使用了正则表达式和字符串操作技术,这些技术需要线性时间,并且还需要对字符串进行修改,因此也需要线性时间。

结论

在给定的任务中,我们学习了如何使用 Javascript 检查字符串是否为回文并忽略标点符号。我们通过将字符串转换为小写、删除标点符号和空格来完成此任务。并且通过比较原始字符串和反向字符串,我们可以确定给定的字符串是否为回文。


相关文章


有用资源