tyt:好 huy:这 bvn:天 jkl :是 lgc:你 qqq:哈 dz:才 aer:人 zse:个 uef:真 out:妙 ygh:小
内容:qfhiqcgyqlhuaghfdkucuvnjdkefjiuiukaaaclzseybhfgwefhbccvnfffdz
问题分析:也就是在上面这段乱七八糟好的内容里面,先找到t,h,b,j,l,q,d,a,z,u,o,y开头的字母,再匹配后面两个字母看有没有这两个字母。有就输入这个汉字,没有就继续循环。当然这个问题是修改过的,首字母都不一样。比较简单。如果再加几个首字母和这个相同的汉字,那就算是一个最基本的公司面试java工程师的题了。
第一步:建立一个密码类,返回值为上面的密文和那一段内容遍历的明文。
public class PwdExcel {
public String miwen;
public String mingwen;
public PwdExcel(String miwen, String mingwen) {
this.mingwen = mingwen;
this.miwen = miwen;
}
}
第二步:建立密码破译类,这个类实现对内容的遍历,再和明文的首字母对比。内层循环再寻找后面对应的字母。有就输出这个汉字
方法1
public class Decode {
private PwdExcel[] mimaben = { new PwdExcel("tyt", "好"), new PwdExcel("huy", "这"), new PwdExcel("bvn", "天"),
new PwdExcel("jkl", "是"), new PwdExcel("lgc", "你"), new PwdExcel("qqq", "哈"), new PwdExcel("dz", "才"),
new PwdExcel("aer", "人"), new PwdExcel("zse", "个"), new PwdExcel("uef", "真"), new PwdExcel("out", "妙"),
new PwdExcel("ygh", "小"), };
public void decode(String mima) {
int i = 0;
// 遍历传入的密码
while (i < mima.length()) {
// 遍历密码表
boolean flag = false;
for (int j = 0; j < mimaben.length; j++) {
if (mima.charAt(i) == mimaben[j].miwen.charAt(0)) {
flag = true;
System.out.print(mimaben[j].mingwen);
// 遍历密码表里面的密文
String mi = mimaben[j].miwen;
for (int m = 0; m < mi.length(); m++) {
//这里只设置光标到哪里了
i = mima.indexOf(mi.charAt(m),i);
i++;
}
break;
}
}
if(flag == false){
i++;
}
}
}
方法2.递归实现
public void decodeI(String mima){
//通过递归实现求密码的
//首先每次输入的密码我们认为是一个新的密文,如果这个密文长度变成0,那么我就可以退出这个递归方法了
//方法递归时,每次我们都用上一次查询完成新的字符串,进行新的查询过程
boolean flag = false;
for(int i = 0; i < mimaben.length;i++){
//如果输入密码的首字母和某个循环的过程中,密码的密文首字母一致,则认为找到了这个文字
if(mima.length()==0){
return;
}
if(mima.charAt(0) ==mimaben[i].miwen.charAt(0)){
flag = true;
System.out.println(mimaben[i].mingwen);
//获取这个密码本的密文
String temp = mimaben[i].miwen;
//使用这个密文尝试截断字符串
for(int j=0;j<temp.length();j++){
int jiedian = mima.indexOf(temp.charAt(j));
mima = mima.substring(jiedian, mima.length());
}
}
}
if(!flag){
mima = mima.substring(0);
}
decodeI(mima);
3.创建test类,实现方法
public static void main(String[] args) {
String mima = "qfhiqcgyqlhuaghfdkucuvnjdkefjiuiukaaaclzseybhfgwefhbccvnfffdz";
Decode decode = new Decode();
decode.decodeI(mima);
}
4.运行结果如下: