📜  回文字符串 js - Javascript (1)

📅  最后修改于: 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),因为没有使用额外的空间。

总结

以上就是两种判断回文字符串的方法。双指针法比暴力破解方法更加高效,因此在实际应用中更为常见。祝大家编程愉快!