OJ习题:简单密码破解 (JAVA大小写转换)
2016-05-10 20:59
1121 查看
题目
密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。 假设渊子原来一个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哦。输入
YUANzi1987输出
zvbo941987大意
大写变小写并向后转一位,小写转数字,数字不动代码
import java.util.Scanner; public class Main { public static void main(String[] args) { String s=new String(); char c; Scanner in=new Scanner(System.in); while(in.hasNext()){ s=in.nextLine(); char[] ch = s.toCharArray(); for(int i=0;i<s.length();i++){ if(ch[i]<'Z'&&ch[i]>='A'){ ch[i]+=1; ch[i]=Character.toLowerCase(ch[i]); } else if(ch[i]=='Z'){ ch[i]='A'; } else{ if(ch[i]>='a'&&ch[i]<='c'){ ch[i]='2'; } if(ch[i]>='d'&&ch[i]<='f'){ ch[i]='3'; } if(ch[i]>='g'&&ch[i]<='i'){ ch[i]='4'; } if(ch[i]>='j'&&ch[i]<='l'){ ch[i]='5'; } if(ch[i]>='m'&&ch[i]<='o'){ ch[i]='6'; } if(ch[i]>='p'&&ch[i]<='s'){ ch[i]='7'; } if(ch[i]>='t'&&ch[i]<='v'){ ch[i]='8'; } if(ch[i]>='w'&&ch[i]<='z'){ ch[i]='9'; } } } System.out.println(ch); } } }
记
事实上是蛮水的题,刚开始不转换成字符数组,直接if(s.charAt(i)<'Z'&&s.charAt(i)>='A'){ char c=s.charAt(i); c+=1; s=s.replace(s.charAt(i),Character.toLowerCase(c)); }
到后面行不通了,用replace方法会把之前大写转小写的也一并转成数字,只好用数组。
相关文章推荐
- 揭开Spring事务处理
- spring中的bean
- JAVA之路003--if和switch的区别
- 利用JAVA制作简单登录窗口
- java 锁 优化
- Spring之FactoryBean
- struts2的action里面name属性命名为account就会无法找到结果页面(其他名称正常),欢迎发言,求解释?
- null==0问题
- Spring Boot 配置日志输出等级
- 学Java的第二天
- 用JAVA制作简单登录窗口
- 目前对SpringMVC和Spring的理解-第一节
- Java设计模式之工厂方法、抽象工厂模式 程序 总结
- Struts2 使用FileUtils上传文件--文件名一定不能有中文!!!
- Java锁之可重入锁介绍
- win7下Eclipse开发Hadoop应用程序环境搭建
- Java反射调用带参数的函数
- Java IO流
- java文件上传和下载
- java set初始化问题