1. 程式人生 > 其它 >java題目HJ85 最長迴文子串

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 }