首页 > 试题广场 >

判断是否为回文字符串

[编程题]判断是否为回文字符串
  • 热度指数:100433 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个长度为 n 的字符串,请编写一个函数判断该字符串是否回文。如果是回文请返回true,否则返回false。

字符串回文指该字符串正序与其逆序逐字符一致。

数据范围:
要求:空间复杂度 ,时间复杂度
示例1

输入

"absba"

输出

true
示例2

输入

"ranko"

输出

false
示例3

输入

"yamatomaya"

输出

false
示例4

输入

"a"

输出

true

备注:
字符串长度不大于1000000,且仅由小写字母组成
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 
 * @param str string字符串 待判断的字符串
 * @return bool布尔型
 */
function judge( str ) {
    // write code here
    return str.split('').reverse().join('') === str
}
module.exports = {
    judge : judge
};

发表于 2022-11-16 23:38:06 回复(0)
//左右双指针
function judge( str ) {
    if(str.length === 0) return true;
    let left = 0;
    let right = str.length - 1;
    while(left < right){
        if(str[left] !== str[right]){
            return false;
        }
        left++;
        right--;
    }
    return true;
}

//for循环法
function judge( str ) {
    for(let i = 0; i < Math.floor(str.length / 2); i++){
        if(str[i] !== str[str.length-i-1])
            return false;
    }
    return true;
}

发表于 2021-10-02 22:33:35 回复(0)
相比字符串取反判断两个字符串相等
for循环方式判断,性能更好,运行速度更快:
function judge( str ) {
   var j = str.length;
    for(var i=0;i<str.length;i++){
        if(str[i] !== str[j-1-i]){
            return false;
        }
    }
return true;
}

字符串取反判断两个字符串相等,简单解法:
function judge( str ) {
var s=str.split("").reverse().join('');
   return s==str?true:false;
}

编辑于 2021-09-24 16:56:19 回复(0)