java题目HJ85 最长回文子串
描述
给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。 所谓回文串,指左右对称的字符串。 所谓子串,指一个字符串删掉其部分前缀和后缀(也可以不删)的字符串 数据范围:字符串长度1\le s\le 350\1≤s≤350 进阶:时间复杂度: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 }