百度:实现一个函数,判断输入是不是回文字符串
sisterAn opened this issue · 6 comments
sisterAn commented
百度:实现一个函数,判断输入是不是回文字符串
Aiyoweioo commented
方法一: 用首尾两个指针,向中间扫描字符串,如果两指针指向的字符都一样, 这字符串就是一个回文。时间复杂度: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
}
sisterAn commented
解法一:使用API
function isPlalindrome(input) {
if (typeof input !== 'string') return false;
return input.split('').reverse().join('') === input;
}
解法二:不使用API
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
}
zero9527 commented
/**
* 判断字符串是否是回文字符串
* @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
qianlongo commented
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
}
thinkingc commented
双指针
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'))
AlexZhang11 commented
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'))