笔试题--字符串处理(3)

/**
 * Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,
 * 比如像这些ABBA,ABA,A,123321,但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解。
 * 比如进行下列变化 ABBA->12ABBA,ABA->ABAKK,123321->51233214 。
 * 因为截获的串太长了,而且存在多种可能的情况(abaaab可看作是aba,或baaab的加密形式),
 * Cathcer的工作量实在是太大了,他只能向电脑高手求助,你能帮Catcher找出最长的有效密码串吗?
 输入:  
字符串-密码内容
输出: 
整形数-有效密码串最大长度
样例输入:   
ABBA
样例输出:   
4
 */
import java.util.Scanner;


public class InterceptPassword {


    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String str=sc.nextLine();
        sc.close();
        char[] ch=str.toCharArray();
        System.out.println(subPWD(ch));
    }
    public static int subPWD(char[] ch)
    {
        int max=1;
        int ind=0;
        char[] ch2=new char[ch.length];
        for(int i=ch.length-1;i>=0;i--)
        {
            ch2[ind++]=ch[i];
        }
        for(int m=0;m<ch.length;m++)
        {
            for(int n=0;n<ch.length;n++)
            {
                if(ch[m]==ch2[n])
                {
                    int count=1;
                    int l=m;
                    int k=n;
                    while(l<ch.length-1&&k<ch.length-1)
                    {
                        if(ch[++l]==ch2[++k])
                        {
                            count++;
                        }
                        else
                        {
                            break;
                        }
                    }
                    if(count>max)
                    {
                        max=count;
                    }
                }
            }
            
        }
    return max; 
    }


}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章