[关闭]
@yexiaoqi 2022-05-20T16:43:58.000000Z 字数 1881 阅读 531

HJ29. 字符串加解密

刷题


题目:对输入的字符串进行加解密,并输出。

加密方法为:
当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;
其他字符不做变化。
解密方法为加密的逆过程。

数据范围:输入的两个字符串长度满足 1≤n≤1000,保证输入的字符串都是只由大小写字母或者数字组成

输入描述:
第一行输入一串要加密的密码
第二行输入一串加过密的密码

输出描述:
第一行输出加密后的字符
第二行输出解密后的字符

示例1

输入:
abcdefg
BCDEFGH

输出:
BCDEFGH
abcdefg

链接https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607


  1. public class Main {
  2. public static void main(String[] args){
  3. Scanner in = new Scanner(System.in);
  4. while(in.hasNext()){
  5. String s = in.nextLine();
  6. String enStr = in.nextLine();
  7. //方法一:查表
  8. System.out.println(check(s, true));
  9. System.out.println(check(enStr, false));
  10. /*//方法二:老老实实转换
  11. System.out.println(encrypt(s));
  12. System.out.println(decrypt(enStr));*/
  13. }
  14. }
  15. //方法一:查表
  16. private static String check(String s, boolean isEncrypt){
  17. String en = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  18. String de = "bcdefghijklmnopqrstuvwxyzaBCDEFGHIJKLMNOPQRSTUVWXYZA1234567890";
  19. StringBuilder sb = new StringBuilder();
  20. for (int i = 0; i < s.length(); i++) {
  21. char c = s.charAt(i);
  22. if (isEncrypt){
  23. sb.append(de.charAt(en.indexOf(c)));
  24. } else {
  25. sb.append(en.charAt(de.indexOf(c)));
  26. }
  27. }
  28. return sb.toString();
  29. }
  30. //方法二:老老实实转换
  31. private static String encrypt(String s) {
  32. StringBuilder sb = new StringBuilder();
  33. for(int i=0; i<s.length(); i++) {
  34. char c = s.charAt(i);
  35. Character temp = null;
  36. if(Character.isLetter(c)){
  37. if(Character.isLowerCase(c))
  38. temp = c=='z' ? 'A' : (char)(Character.toUpperCase(c)+1);
  39. if(Character.isUpperCase(c))
  40. temp = c=='Z' ? 'a' :(char)(Character.toLowerCase(c)+1);
  41. } else {
  42. temp = c=='9' ? '0' : (char)(c+1);
  43. }
  44. sb.append(temp);
  45. }
  46. return sb.toString();
  47. }
  48. private static String decrypt(String s){
  49. StringBuilder sb = new StringBuilder();
  50. for(int i=0; i<s.length(); i++) {
  51. char c = s.charAt(i);
  52. Character temp = null;
  53. if(Character.isLetter(c)){
  54. if(Character.isLowerCase(c))
  55. temp = c=='a' ? 'Z' : (char)(Character.toUpperCase(c)-1);
  56. if(Character.isUpperCase(c))
  57. temp = c=='A' ? 'z' : (char)(Character.toLowerCase(c)-1);
  58. } else {
  59. temp = c=='0' ? '9' : (char)(c-1);
  60. }
  61. sb.append(temp);
  62. }
  63. return sb.toString();
  64. }
  65. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注