题解 | #简单密码#
import java.util.Scanner; /** * @author hll[yellowdradra@foxmail.com] * @date 2022-09-29 17:28 **/ public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println(encrypt(in.nextLine())); } public static String encrypt(String info) { char[] chars = info.toCharArray(); for (int i = 0; i < chars.length; i++) { chars[i] = convert(chars[i]); } return String.valueOf(chars); } public static char convert(char c) { if ('a' <= c && c <= 'r') { return (char) (((c - 'a') / 3) + 'a'); } if ('A' <= c && c <= 'Z') { return (char) ((c - 'A' + 1) % 'Z' + 'a'); } return switch (c) { case 's' -> '7'; case 't', 'u', 'v' -> '8'; case 'w', 'x', 'y', 'z' -> '9'; default -> c; }; } }
牛客的JDK版本过低是不支持switch的这种写法的 如果要在牛客上运行 要把convert方法改成下面这样 个人觉得 上面这种switch写法优雅且易于理解和阅读
public static char convert(char c) { char result = c; if ('a' <= c && c <= 'r') { return (char) (((c - 'a') / 3) + '2'); } if ('A' <= c && c <= 'Z') { return c == 'Z' ? 'a' : (char) (c + ('a' - 'A') + 1); } switch (c) { case 's': return '7'; case 't': case 'u': case 'v': return '8'; case 'w': case 'x': case 'y': case 'z': return '9'; default: break; } return result; }