方法一: 用首尾两个指针,向中间扫描字符串,如果两指针指向的字符都一样, 这字符串就是一个回文。时间复杂度:O(n),空间复杂度:O(1) 方法二:从中间开始,向两头扩展查看指向的字符是否一致。
/** 判断是不是回文字符串 * @param {string} str * return Boolean */ function IsPalindrome(str) { if (str === null || str.length < 1) { return false } let left = 0, right = str.length - 1 while(left < right) { if(str.charAt(left) !== str.charAt(right)) { return false } ++left; --right; } return true }
function isPlalindrome(input) { if (typeof input !== 'string') return false; return input.split('').reverse().join('') === input; }
function isPlalindrome(input) { if (typeof input !== 'string') return false; let i = 0, j = input.length - 1 while(i < j) { if(input.charAt(i) !== input.charAt(j)) return false i ++ j -- } return true }
/** * 判断字符串是否是回文字符串 * @param {*} str */ function isReverseString(str) { if (typeof str !== 'string') return false; // 方法1:reverse // return str.split('').reverse().join('') === str; // 方法2 const strArr = str.split(''); let reverseStr = ''; let len = strArr.length - 1; while (len >= 0) reverseStr += strArr[len--]; return str === reverseStr; } console.log(isReverseString('asddsa')); // true console.log(isReverseString('asdDsa')); // false console.log(isReverseString('13dffd31')); // true
const isPalindrome = () => { const len = str.length const halfLen = len / 2 for (let i = 0; i < halfLen; i++) { if (str[i] !== str[ len - i - 1 ]) { return false } } return true }
双指针
function isReverseString(str) { var half = str.toString().length / 2 | 0 var l = 0 var r = str.length - 1 while (l != half) { if (str[l++] != str[r--]) return false } return true } var { log } = console log(isReverseString('12321')) log(isReverseString('123321')) log(isReverseString('234'))
function isPalindrome(str){ let i = 0,k = str.length-1 let flg = true while(i<k&&flg){ if(str.charAt(i)!==str.charAt(k)){ flg= false } i++ k-- } return flg } console.log(isPalindrome('aabbccdccbbaa')) console.log(isPalindrome('aabbccdvsccbbaa'))
Activity
[-]Leetcode3:无重复字符的最长子串[/-][+]百度:实现一个函数,判断输入是不是回文字符串[/+]Aiyoweioo commentedon Apr 20, 2020
方法一: 用首尾两个指针,向中间扫描字符串,如果两指针指向的字符都一样, 这字符串就是一个回文。时间复杂度:O(n),空间复杂度:O(1)
方法二:从中间开始,向两头扩展查看指向的字符是否一致。
sisterAn commentedon Apr 20, 2020
解法一:使用API
解法二:不使用API
zero9527 commentedon Apr 29, 2020
qianlongo commentedon Aug 15, 2020
thinkingc commentedon Apr 6, 2021
双指针
AlexZhang11 commentedon May 31, 2024
function isPalindrome(str){ let i = 0,k = str.length-1 let flg = true while(i<k&&flg){ if(str.charAt(i)!==str.charAt(k)){ flg= false } i++ k-- } return flg } console.log(isPalindrome('aabbccdccbbaa')) console.log(isPalindrome('aabbccdvsccbbaa'))