题解 | #最长回文子串#

最长回文子串

https://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af

中心扩展法,统计长度因为每次都是+2,初始化的时候为了方便初始化比正常的大了1,所以需要减一;
import java.util.*;

class Solution {
    public int getLongestPalindrome(String s) {
        int len = s.length();
        int maxcnt = 0;
        if (s == null || (len) < 1) return 0;
        //总共有2 * len - 1个中心点
        for (int i = 0; i < 2 * len - 1; i++) {
            //通过遍历每个回文中心,向两边扩散,并判断是否回文字串
            //有两种情况,left == right,right = left + 1,这两种回文中心是不一样的
            // 奇数相同,偶数加一
            int left = i / 2, right = left + i % 2;
            int cnt;
            if (i % 2 == 0) cnt = 0;
            else cnt = 1;
            while (left >= 0 && right < len && s.charAt(left) == s.charAt(right)) {
                // 每次往外延展其实是2个长度!
                cnt += 2;
                //如果当前是一个回文串,则记录数量
                if (maxcnt < cnt) {
                    maxcnt = cnt;
                }
                left--;
                right++;
            }
        }
        return maxcnt - 1;
    }
}



全部评论

相关推荐

03-04 19:02
云南大学 Java
Yki_:没挂,只是没人捞,该干啥干啥,等着就好了
点赞 评论 收藏
分享
野猪不是猪🐗:好歹也统一一下吧,第一个项目技术栈用加号连接,第二个又变成逗号了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务