• 最长回文串


    最长回文串

    给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。
    示例 1:
    输入: "babad"
    输出: "bab"
    注意: "aba"也是一个有效答案。
    示例 2:
    输入: "cbbd"
    输出: "bb"

    代码实现

     /**
         * 最长回文子串
         *
         * @param args
         */

        public static void main(String[] args{
            Scanner sc = new Scanner(System.in);
            String s = sc.next();
            System.out.println(longestPalindrome(s));

        }

        public static String longestPalindrome(String s{
            if ("".equals(s)) {
                return "";
            }
            int len = s.length();
            if (len == 1) {
                return s;
            }
            int sLength = 1;
            int start = 0;
            int[][] db = new int[len][len];
            for (int i = 0; i < len; i++) {
                //定义初始化状态
                db[i][i] = 1;
                if (i < len - 1 && s.charAt(i) == s.charAt(i + 1)) {
                    db[i][i + 1] = 1;
                    sLength = 2;
                    start = i;
                }
            }
            for (int i = 3; i <= len; i++) {
                for (int j = 0; j + i - 1 < len; j++) {
                    int end = j + i - 1;
                    if (s.charAt(j) == s.charAt(end)) {
                        db[j][end] = db[j + 1][end - 1];
                        if (db[j][end] == 1) {
                            start = j;
                            sLength = i;
                        }
                    }
                }
            }
            return s.substring(start, start + sLength);
        }
  • 相关阅读:
    开源数据采集组件比较: scribe、chukwa、kafka、flume
    主流开源SQL(on Hadoop)总结
    Hive over HBase和Hive over HDFS性能比较分析
    开源Astro(SparkSQL On HBase)
    ML: 降维算法-LE
    ML: 降维算法-LLE
    Blender使用基础
    Cycles渲染研究测试效果图
    vs2008所有DTE.ExecuteCommand命令
    come on,逆战
  • 原文地址:https://www.cnblogs.com/wuhen8866/p/11913143.html
Copyright © 2020-2023  润新知