黑马程序员技术交流社区
标题:
这么简单的题目不会...咋整
[打印本页]
作者:
黄兴旺
时间:
2013-4-8 17:23
标题:
这么简单的题目不会...咋整
本帖最后由 黄兴旺 于 2013-4-8 19:38 编辑
密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈.
接下来渊子要在密码之上再加一套密码,虽然简单但也安全。
假设渊子原来一个BBS上的密码为zvbo941987,为了方便记忆,他通过一种算法把这个密码变换成YUANzi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。
他是这么变换的,大家都知道手机上的字母: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,就这么简单,渊子把密码中出现的小写字母都变成对应的数字,数字和其他的符号都不做变换,声明:密码中没有空格,而密码中出现的大写字母则边成小写之后往后移一位,如:X,先边成小写,再往后移一位,不就是y了嘛,简单吧。记住,z往后移是a哦。
输入
输入包括多个测试数据。输入是一个明文,密码长度不超过100个字符,输入直到文件结尾。
输出
输出渊子真正的密文。
样例输入
YUANzi1987
样例输出
zvbo941987
作者:
黄兴旺
时间:
2013-4-8 17:25
附上我蛋疼的代码
import java.util.*;
class mima
{
public static void main(String[] args)
{
Scanner cin = new Scanner(System.in);
char[] a = new char[100];
for (int i=0;i<100;i++ )
{
if (a[i]>='A'&&a[i]<'Z')
a[i] = a[i] + 33;
else if (a[i]=='Z')a[i]='a';
else if (a[i]>='a'&&a[i]<='c')a[i]='2';
else if (a[i]>='d'&&a[i]<='f')a[i]='3';
else if (a[i]>='g'&&a[i]<='i')a[i]='4';
else if (a[i]>='j'&&a[i]<='l')a[i]='5';
else if (a[i]>='m'&&a[i]<='o')a[i]='6';
else if (a[i]>='p'&&a[i]<='s')a[i]='7';
else if (a[i]>='t'&&a[i]<='v')a[i]='8';
else if (a[i]>='w'&&a[i]<='z')a[i]='9';
}
System.out.println(a);
}
}
复制代码
作者:
刘胜寒
时间:
2013-4-8 18:10
public static void main(String[] args)
{
char[] ans ={'b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a'};
char[] res ={'2','2','2','3','3','3','4','4','4','5','5','5','6','6','6','7','7','7','7','8','8','8','9','9','9','9'};
Scanner cin = new Scanner(System.in);
String str = null;
String Out = null;
while(cin.hasNext())
{
Out = "";
str = cin.next();
for(int i=0;i<str.length();i++)
{
char tmp = str.charAt(i);
if(tmp>='a'&&tmp<='z')
{
Out+=res[tmp-'a'];
}
else if(tmp>='A'&&tmp<='Z')
{
Out+=ans[tmp-'A'];
}
else
{
Out+=tmp;
}
}
System.out.println(Out);
}
}
复制代码
希望你能看得懂......
不是按照你的思路来写的....
作者:
黄兴旺
时间:
2013-4-8 18:24
似水像火 发表于 2013-4-8 18:10
希望你能看得懂......
不是按照你的思路来写的....
我就说嘛 。。
没事 可以学习新技术。。
作者:
谢达
时间:
2013-4-8 21:00
这是我看到这道题目的想法.不管好坏还是给lz看看吧
public class EncryptDemo {
//定义Map存储相应的字符转换规则
private static Map<String,Integer> eUtils = new HashMap<String,Integer>();
static{
eUtils.put("abc", 2);
eUtils.put("def", 3);
eUtils.put("ghi", 4);
eUtils.put("jkl", 5);
eUtils.put("mno", 6);
eUtils.put("pqrs", 7);
eUtils.put("tuv", 8);
eUtils.put("wxyz", 9);
}
//加密方法
public static String encrypt(String pwd){
//定义StringBuilder对象返回加密后的数据
StringBuilder eKey = new StringBuilder();
for(int i=0;i<pwd.length();i++){
char k = pwd.charAt(i);//获取密码的每个字符
if(k>='A' && k<='Z'){ //如果字符是大写字母
k+=32; //变为小写
if((char)k>'z'){
k='a';
}
else{
k+=1;
}
eKey.append(k); //保存本次加密字符
}else if(k>='a' && k<='z'){
//从字符转换规则Map里面依次取出与预加密的字符匹配,匹配成功则预加密字符转换成相应数字
Set<String> strs = eUtils.keySet();
Iterator<String> it = strs.iterator();
while(it.hasNext()){
String ks = it.next();
int value =eUtils.get(ks); //获取相应字符对应的转换值
if(ks.indexOf(k)!=-1){
eKey.append(value);
}
}
}else { //表明是数字或其它字符
eKey.append(k);
}
}
return eKey.toString();
}
public static void main(String[] args) {
String pwd = "YUANzi1987";
System.out.println(EncryptDemo.encrypt(pwd)); //输出zvbo941987
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2