万普插件库

jQuery插件大全与特效教程

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

题目

给你一个字符串 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);
}
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言