public class MiMaBiao {
public String miwen;
public String mingwen;
public MiMaBiao(String miwen ,String mingwen){
this.miwen = miwen;
this.mingwen = mingwen;
}
}
public class Decode {
private MiMaBiao[] mimaben = {
new MiMaBiao("tyt", "好"),
new MiMaBiao("huy", "这"),
new MiMaBiao("bvn", "天"),
new MiMaBiao("jkl", "是"),
new MiMaBiao("lgc", "你"),
new MiMaBiao("qqq", "哈"),
new MiMaBiao("dz", "才"),
new MiMaBiao("aer", "人"),
new MiMaBiao("zse", "个"),
new MiMaBiao("uef", "真"),
new MiMaBiao("out", "妙"),
new MiMaBiao("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.println(mimaben[j].mingwen);
//遍历密码表的密文
String mi = mimaben[j].miwen;
for(int m = 0 ; m < mi.length();m++){
//这里我只设置i的光标到哪里
i = mima.indexOf(mi.charAt(m),i);
i++;
}
break;
}
}
if (!flag ) {
i++;
}
}
}
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 jiedain = mima.indexOf(temp.charAt(j));
mima= mima.substring(jiedain+1, mima.length());
}
}
}
if (!flag) {
mima=mima.substring(1);
}
decodeI(mima);
}
}
public class TestMain {
public static void main(String[] args) {
String mima = new String("qfhiqcgyqlhuaghfdkucuvnjdkefjiu"
+ "iukaaaclzseybhfgwefhbccvnfffdz");
Decode decode = new Decode();
decode.decodeI(mima);
; }
}
public String miwen;
public String mingwen;
public MiMaBiao(String miwen ,String mingwen){
this.miwen = miwen;
this.mingwen = mingwen;
}
}
public class Decode {
private MiMaBiao[] mimaben = {
new MiMaBiao("tyt", "好"),
new MiMaBiao("huy", "这"),
new MiMaBiao("bvn", "天"),
new MiMaBiao("jkl", "是"),
new MiMaBiao("lgc", "你"),
new MiMaBiao("qqq", "哈"),
new MiMaBiao("dz", "才"),
new MiMaBiao("aer", "人"),
new MiMaBiao("zse", "个"),
new MiMaBiao("uef", "真"),
new MiMaBiao("out", "妙"),
new MiMaBiao("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.println(mimaben[j].mingwen);
//遍历密码表的密文
String mi = mimaben[j].miwen;
for(int m = 0 ; m < mi.length();m++){
//这里我只设置i的光标到哪里
i = mima.indexOf(mi.charAt(m),i);
i++;
}
break;
}
}
if (!flag ) {
i++;
}
}
}
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 jiedain = mima.indexOf(temp.charAt(j));
mima= mima.substring(jiedain+1, mima.length());
}
}
}
if (!flag) {
mima=mima.substring(1);
}
decodeI(mima);
}
}
public class TestMain {
public static void main(String[] args) {
String mima = new String("qfhiqcgyqlhuaghfdkucuvnjdkefjiu"
+ "iukaaaclzseybhfgwefhbccvnfffdz");
Decode decode = new Decode();
decode.decodeI(mima);
; }
}