LeetCode - 最长回文子串
Posted s-star
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode - 最长回文子串相关的知识,希望对你有一定的参考价值。
题目描述:
给定一个字符串 s
,找到 s
中最长的回文子串。你可以假设 s
的最大长度为 1000。
示例 1:
输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd" 输出: "bb"
code:
public class Solution { public String longestPalindrome(String s) { if (null == s || s.length() <= 1) { return s; } if (2 == s.length()) { return s.substring(0, 1).equals(s.substring(1, 2)) ? s : s.substring(0, 1); } String str = s; String reStr = new StringBuffer(s).reverse().toString(); int len = s.length(); int[][] arr = new int[len][len]; int maxLen = 0; int maxEnd = 0; for (int i = 0; i < s.length(); i++) { for (int j = 0; j < s.length(); j++) { if (str.charAt(i) == reStr.charAt(j)) { if (i == 0 || j == 0) { arr[i][j] = 1; } else { arr[i][j] = arr[i - 1][j - 1] + 1; } } if (arr[i][j] > maxLen) { maxLen = arr[i][j]; maxEnd = i; } } } return s.substring(maxEnd - maxLen + 1, maxEnd + 1); } }
以上是关于LeetCode - 最长回文子串的主要内容,如果未能解决你的问题,请参考以下文章