5. LeetCode:最长回文子串

一. 问题描述

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

二. 分析

2.1 判断一个字符串是不是回文
就是判断字符串第一个位置和最后一个位置是否相同,第二个位置和倒数第二个是否相同...


huiwen.png

2.2 要判断的字符串


image.png

同时,还可以去掉长度小于已经判断出来的字符串长度的回文判断

三. 代码

package com.hjb.leetcode;
/**
 * @DESC 寻找字符串的最长回文字串
 * @author HJB
 * @date 2020年4月21日 下午8:14:56
 */
public class ZuiChangHuiWenZiChuan {
    
    public String longestPalindrome(String s) {
        if (s == null || s.length() < 1) {
            return "";
        }
        String result = s.substring(0, 1);
        String temp = "";
        for (int i=0; i<s.length()-result.length(); i++) {
            for (int j=i+result.length(); j<=s.length(); j++) {
                temp = s.substring(i, j);
                if (temp.length() > result.length()) {
                    if (isHuiWen(temp)) {
                        result = temp;
                    }
                }
            }
        }
        return result;
    }
    public boolean isHuiWen(String str) {
        for (int i=0; i<=str.length()/2; i++) {
            if (str.charAt(i) != str.charAt(str.length() - 1 -i)) {
                return false;
            }
        }
        return true;
    }
    public static void main(String[] args) {
        System.out.println(new ZuiChangHuiWenZiChuan().longestPalindrome("sdh上海自来水来自海上dssdfssd"));
    }
}
运行结果:
上海自来水来自海上
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容