您的位置:首页 > 其它

字符串运用-密码截取

2015-04-14 21:01 218 查看
package oj.test;

import java.util.Scanner;

public class Demo1 {

/**

* @字符串运用-密码截取

* Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,比如像这些ABBA,ABA,A,123321,

* 但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解。比如进行下列变化 ABBA->12ABBA,

* ABA->ABAKK,123321->51233214 。因为截获的串太长了,而且存在多种可能的情况(abaaab可看作是aba,

* 或baaab的加密形式),Cathcer的工作量实在是太大了,他只能向电脑高手求助,你能帮Catcher找出最长的有

* 效密码串吗?

* 样例输入:

* ABBA

* 12ABBA

* A

* ABAKK

* 51233214

* abaaab

* 样例输出:

* 4

* 4

* 1

* 3

* 6

* 5

*/

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

String str1 = sc.nextLine();

String str2 = reverse(str1);

sop(str2);

sop(sub_str(str1,str2).length());

}

private static String sub_str(String str1, String str2) {

str1 = str1.toLowerCase();

str2 = str2.toLowerCase();

for(int i =0;i<str2.length();i++){

for(int j =0,k=str2.length()-i;k!=str2.length()+1;j++,k++){

String temp = str2.substring(j, k);

if(str1.contains(temp))

return temp;

}

}

return null;

}

private static String reverse(String str) {

char[] arr = str.toCharArray();

for(int i=0,j=arr.length-1;i<=j;i++,j--)

change(arr,i,j);

return new String(arr);

}

private static void change(char[] arr, int i, int j) {

char temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

}

public static void sop(Object obj){

System.out.println(obj);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: