📅  最后修改于: 2023-12-03 14:50:45.120000             🧑  作者: Mango
回文字符串(Palindrome)是指正着读和反着读都相同的字符串,比如“level”、“racecar”、“deified”等等。在本文中,我们将介绍如何使用 JavaScript 来判断一个字符串是否是回文字符串。
最简单的方法就是将字符串反转后与原来的字符串进行比较。如果相同,那么就是回文字符串,反之则不是。
function isPalindrome(str) {
const reversedStr = str.split('').reverse().join('');
return str === reversedStr;
}
这种方法的时间复杂度是 O(n),因为需要遍历两次字符串,空间复杂度也是 O(n),因为需要开辟一个数组来存储反转后的字符串。
还有一种更加高效的方法,就是使用双指针。定义两个指针,分别指向字符串的首尾字符,然后向中间移动。每当它们指向的字符不相同时,就可以判断字符串不是回文字符串。
function isPalindrome(str) {
let left = 0;
let right = str.length - 1;
while (left < right) {
if (str[left] !== str[right]) {
return false;
}
left++;
right--;
}
return true;
}
这种方法的时间复杂度是 O(n/2) 或者简写为 O(n),因为只需要遍历一半字符串,空间复杂度是 O(1),因为没有使用额外的空间。
以上就是两种判断回文字符串的方法。双指针法比暴力破解方法更加高效,因此在实际应用中更为常见。祝大家编程愉快!