java題目HJ85 最長迴文子串
阿新 • • 發佈:2022-03-06
描述
給定一個僅包含小寫字母的字串,求它的最長迴文子串的長度。 所謂迴文串,指左右對稱的字串。 所謂子串,指一個字串刪掉其部分字首和字尾(也可以不刪)的字串 資料範圍:字串長度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.*; 23 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 }