gpt4 book ai didi

javascript - 使用 Javascript 评估字符串是否为回文的最有效方法是什么?

转载 作者:行者123 更新时间:2023-11-29 16:13:25 25 4
gpt4 key购买 nike

我是 Javascript 的新手,写了下面的代码来确定一个字符串是否是回文。我很好奇完成相同任务的最有效方法是什么。

var isPalindrome = function (string) {
var leftString = [];
var rightString = [];

// Remove spaces in the string and convert to an array
var strArray = string.split(" ").join("").split("");
var strLength = strArray.length;

// Determine if the string is even or odd in length, then assign left and right strings accordingly
if (strLength % 2 !== 0) {
leftString = strArray.slice(0, (Math.round(strLength / 2) - 1));
rightString = strArray.slice(Math.round(strLength / 2), strLength);
} else {
leftString = strArray.slice(0, (strLength / 2));
rightString = strArray.slice((strLength / 2, strLength))
}

if (leftString.join("") === rightString.reverse().join("")) {
alert(string + " is a palindrome.");
} else {
alert(string + " is not a palindrome.")
}

}


isPalindrome("nurses run");

最佳答案

不清楚您是在谈论代码长度方面的效率还是计算量方面的效率,但这在这两个方面应该都相当不错。它考虑了空格和大写旁边的非字母字符:

function isPalindrome(str) {
var i, len;

str = str.toLowerCase().replace(/[^a-z]/g, '');
len = str.length;

for(i = 0; i < len / 2; i += 1) {
if(str.charCodeAt(i) != str.charCodeAt(len - i - 1)) {
return false;
}
}

return true;
}

一种更短的方法(尽管可能计算量更大):

function isPalindrome(str) {
str = str.toLowerCase().replace(/[^a-z]/g, '');

return str == str.split("").reverse().join("");
}

如果你真的想要警报的东西,我建议把它放在一个单独的函数中:

function isPalindromeAlert(str) {
alert(str + "is " + (isPalindrome(str) ? "" : "not ") + "a palindrome.");
}

关于javascript - 使用 Javascript 评估字符串是否为回文的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21536535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com