朴素的中心扩展想法

判断回文

http://www.nowcoder.com/questionTerminal/e297fdd8e9f543059b0b5f05f3a7f3b2

很朴素的中心扩展想法,根据字符串的长度不同来确定不同的左右指针。详见注解,时间为O(S),空间O(1),其中S是字符串长度。

public boolean judge (String str) {
    int left = 0, right = 0;
    //根据长度的奇偶性来确定不同的指针起始位置
    if ((str.length() & 1) == 0) {
        left = (str.length() >> 1) - 1;
        right = (str.length() >> 1);
    } else {
        left = right = (str.length() >> 1);
    }
    //进行中心扩展,扩展的过程中一旦遇到不相等的直接返回即可
    for (; left >= 0 && right < str.length(); left--, right++) {
        if (str.charAt((left)) != (str.charAt(right))) return false;
    }
    //扩展完毕,返回true
    return true;
}       
全部评论

相关推荐

小浪_Coding:1. 个人技能排版太乱, 写的技术栈太浅了, 跟测试,自动化相关的太少; 2. 项目开发类的太简单没有亮点, 算法类的项目建议只放一个,最好有自动化,CI/CD, pipline的项目, 需要更换; 3.整体排版需要优化, SOOB打招呼都需要注意等.
我的简历长这样
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务