回文字符串
什么是回文字符串
回文字符串:是一个正读和反读都一样的字符串。
判断回文字符串的方法
双指针法
这是最直观的方法。我们可以设置两个指针,一个从字符串的开始位置开始,一个从字符串的结束位置开始,然后同时向中间移动。在移动的过程中,如果两个指针指向的字符不相等,那么这个字符串就不是回文字符串。如果两个指针都移动到了中间位置,那么这个字符串就是回文字符串。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| let str = 'abba'; let str2 = 'abdc';
function isPalindrome(s) { let left = 0,right = s.length-1 while(left<right){ if(s[left] != s[right]){ return false } left++ right-- } return true }
console.log(isPalindrome(str)) console.log(isPalindrome(str2))
|
反转字符串
我们可以将字符串反转,然后比较反转后的字符串和原字符串是否相等。如果相等,那么这个字符串就是回文字符串。
1 2 3 4 5 6 7 8 9 10
| let str = 'abba'; let str2 = 'abdc';
function isPalindrome(s) { let reverseStr = s.split('').reverse().join('') return s === reverseStr } console.log(isPalindrome(str)) console.log(isPalindrome(str2))
|
递归
我们可以递归地判断一个字符串是否为回文字符串。如果字符串的首字符和尾字符相等,并且去掉首字符和尾字符后的字符串仍然是回文字符串,那么这个字符串就是回文字符串。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| let str = 'abba'; let str2 = 'abdc';
function isPalindrome(s) { if (s.length <= 1) { return true; } if (s[0] !== s[s.length - 1]) { return false; } return isPalindrome(s.slice(1, s.length - 1)); }
console.log(isPalindrome(str)) console.log(isPalindrome(str2))
|