java题目HJ85 最长回文子串


描述

给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。 所谓回文串,指左右对称的字符串。 所谓子串,指一个字符串删掉其部分前缀和后缀(也可以不删)的字符串 数据范围:字符串长度1\le s\le 350\1s350  进阶:时间复杂度:O(n)\O(n) ,空间复杂度:O(n)\O(n) 

输入描述:

输入一个仅包含小写字母的字符串

输出描述:

返回最长回文子串的长度

示例1

输入:
cdabbacc
输出:
4
说明:
abba为最长的回文子串  

回文串:准确说应该是正反读相同如abdba的回文串是5

 1 import java.util.*;
 2 
 3 public class Main {
 4     public static void main(String args[]) {
 5         Scanner input = new Scanner(System.in);
 6         String s = input.nextLine();
 7         int max = 0;
 8         /**
 9         *双指针遍历找到最长子串
10         */
11         for (int start = 0; start < s.length(); start ++){
12             for (int end =s.length(); end > start; end--) {
13                 String compared = s.substring(start, end);
14                 if (isPalindromeString(compared)) {
15                     max = Math.max(max, end - start);
16                 }
17             }
18         }
19         System.out.print(max);
20     }
21     
22     /**
23     *判断一个字符串是否是回文字符串的方法
24     */
25     static boolean isPalindromeString(String s) {
26         StringBuilder s1 =new StringBuilder(s);
27         return s.equals(s1.reverse().toString());
28     }
29 }