1. 程式人生 > 其它 >java題目HJ32 密碼擷取

java題目HJ32 密碼擷取

描述

Catcher是MCA國的情報員,他工作時發現敵國會用一些對稱的密碼進行通訊,比如像這些ABBA,ABA,A,123321,但是他們有時會在開始或結束時加入一些無關的字元以防止別國破解。比如進行下列變化 ABBA->12ABBA,ABA->ABAKK,123321->51233214 。因為截獲的串太長了,而且存在多種可能的情況(abaaab可看作是aba,或baaab的加密形式),Cathcer的工作量實在是太大了,他只能向電腦高手求助,你能幫Catcher找出最長的有效密碼串嗎?     資料範圍:字串長度滿足 1 \le n \le 2500 \1n2500 

輸入描述:

輸入一個字串(字串的長度不超過2500)

輸出描述:

返回有效密碼串的最大長度

示例1

輸入:
ABBA
輸出:
4

示例2

輸入:
ABBBA
輸出:
5

 

 

 1 import java.io.*;
 2 import java.util.*;
 3 
 4 public class Main {
 5     public static void main(String[] args) throws IOException {
 6         Scanner sc = new Scanner(System.in);
7 while(sc.hasNext()) { 8 String s = sc.nextLine(); 9 System.out.println(solution(s)); 10 } 11 } 12 13 public static int longStr(String s, int left, int right) { 14 while( left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
15 left--; 16 right++; 17 } 18 return right-left -1; 19 } 20 21 22 23 public static int solution(String str) { 24 int res = 0; 25 for(int i = 0; i<str.length(); i++) { 26 //ABA型 27 int len1 = longStr(str,i,i); 28 int len2 = longStr(str,i,i+1); 29 res = Math.max(res, len1 > len2 ? len1 : len2); 30 } 31 return res; 32 } 33 }