什麼是回文字元串?
即為一個字元串從左往右讀和從右往左讀,結果一樣。例如字元串“aba”就是一個回文字元串。
1.問題描述(在牛客網刷題遇到的一個問題):在一個字元串的開始或者結尾加入無關字元。比如進行下列變化 ABBA->12ABBA,ABA->ABAKK,123321->51233214。求字元串的最大回文子串中字元的個數!
2.思路分析:本 題實際在求字元串的最大回文子串。可利用動态規劃的思想。代碼如下:
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String a = sc.next();
int len = a.length();
//建立一個二維數組
int arr[][] = new int[len+1][len+1];
StringBuffer sb = new StringBuffer(a);
StringBuffer b = sb.reverse();//反轉之後的字元串
int max = 0;
for(int i=1;i<=len;i++){
for(int j=1;j<=len;j++){
if(a.charAt(i-1)==b.charAt(j-1)){
arr[i][j] = arr [i-1][j-1]+1;
}
if(arr[i][j]>max){
max=arr[i][j];
}
}
}
System.out.println(max);
}
}
}
PS:第一次寫部落格,希望對大家有幫助。如有可改進的地方,歡迎交流!