这里介绍一种利用队列性质加解密字符串的方法。
class phoneNumGame {
/*
encodePhoneNum 加密电话号码,删除第一个数字,把第二个放在串末尾,
直到所有数字删完,所有删除的数字构成了加密后的数字
*/
public static String encodePhoneNum(String strNum) {
String encNum = "";
while (strNum.length() > 0) {
// 加密串后插入原始串的首字符
encNum += strNum.substring(0, 1);
// 原串删除首字符
strNum = strNum.substring(1);
if (strNum.length() > 0) {
// 如果原串还有字符,将首字符放在尾部
strNum = strNum.substring(1) + strNum.substring(0, 1);
}
}
return encNum;
}
/*
decodePhoneNum 解密电话号码
从加密串末尾删除一个数字,把数字插入解密串的头部,把解密串末尾的数字放在串开头,
直到加密串为空,所有删除的数字构成了解密后的数字
*/
public static String decodePhoneNum(String encNum) {
String decNum = "";
while (encNum.length() > 0) {
// 把加密串的首字符插入解密串头部
decNum = encNum.substring(encNum.length() - 1) + decNum;
// 删除加密串首字符
encNum = encNum.substring(0, encNum.length() - 1);
// 当加密串还有字符时,把解密串的尾字符放在头部
if (encNum.length() > 0) {
decNum = decNum.substring(decNum.length() - 1) + decNum.substring(0, decNum.length() - 1);
}
}
return decNum;
}
}