Java笔试算法-找到字符串中最长的回文子串

Java笔试算法-找到字符串中最长的回文子串

经验文章nimo972025-05-15 21:31:573A+A-

题目

给你一个字符串 s,找到 s 中最长的 回文子串。

回文: 正读和反着读顺序一样

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。


public static void main(String[] args) {
    String s = "dbabcaa";

    List<String> temp = new ArrayList<>();
    for (int i = 0; i < s.length(); i++) {
        // 找出所有子串
        for (int j = 0; j < i; j++) {
            String sub = s.substring(j, i);
            if (isPalindrome(sub)) {
                temp.add(sub);
            }
        }
    }

    String longest = temp.stream().max(Comparator.comparing(String::length)).get();

    System.out.println(longest);
}

public static boolean isPalindrome(String a) {
    if (a==null || a.isEmpty()) {
        return false;
    }

    if (a.length() == 1) {
        return true;
    }

    char[] chars = a.toCharArray();
    // 翻转字符串
    char[] revert = new char[chars.length];
    int j = 0;
    for (int i = chars.length-1; i>-1 ; i--) {
        revert[j++] = chars[i];
    }

    return new String(revert).equals(a);
}
点击这里复制本文地址 以上内容由nimo97整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

尼墨宝库 © All Rights Reserved.  蜀ICP备2024111239号-7