zoukankan      html  css  js  c++  java
  • 最长回文串

    最长回文串

    给定一个字符串 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);
        }
  • 相关阅读:
    JS预编译
    伪元素、伪类和选择器之间的区别
    js中== 和 != 的转换规则
    js数据类型的转换
    数组习题
    document语句以及html()等方法
    第十一章 以太网交换机工作原理
    第一章 架构基础介绍
    Linux常规练习题(二)参考答案
    第三十四章 Linux常规练习题(一)参考答案
  • 原文地址:https://www.cnblogs.com/wuhen8866/p/11913143.html
Copyright © 2011-2022 走看看