华为OD机试 2024C卷题库疯狂收录中,刷题点这里
专栏导读
本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷+C卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。
一、题目描述
给定一段 “密文”字符串 s ,其中字符都是经过 “密码本” 映射的,现需要将“密文”解密并且输出。
映射的规则:
- ( a−i ) 分别用(1−9 )表示;
- (j−z ) 分别用(10∗−26∗ )表示。
约束:映射始终唯一。
二、输入描述
“密文”字符串
三、输出描述
明文字符串
1、输入
201920*
2、输出
tst
3、说明
四、解题思路
通过题意可知:
- (j−z ) 分别用(10∗−26∗ )表示,包含10-26要和*去组合替换j-z的字母。
- ( a−i ) 分别用(1−9 )表示,1-9的数字直接替换为a-i的字母。
也就是说要先对10-26的数字进行替换,替换不了的再进行1-9数字的替换。
五、Java算法源码
public class Test00 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
// (j−z ) 分别用(10∗−26∗ )表示。
for (int i = 10; i <= 26; i++) {
String key = i + "\\*";
String val = String.valueOf((char) ('a' + i - 1));
str = str.replaceAll(key, val);
}
// ( a−i ) 分别用(1−9 )表示;
for (int i = 1; i < 10; i++) {
String key = i + "";
String val = String.valueOf((char) ('a' + i - 1));
str = str.replaceAll(key, val);
}
System.out.println(str);
}
}
六、效果展示
1、输入
201920010
2、输出
tst0j
3、说明
- 20*解密为t
- 19*解密为s
- 20*解密为t
- 0无需解密
- 10*解密为j
- 最后输出tst0j
🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2024 C卷 200分)
🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷+C卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。