华为OD统一考试 -密码解密
题目描述
给定一段“密文”字符串 s,其中字符都是经过“密码本”映射的,现需要将“密文”解密并输出。
映射的规则('a' ~ 'i')分别用('1' ~ '9')表示;('j' ~ 'z')分别用("10*" ~ "26*")表示。
约束:映射始终唯一。
输入描述
“密文”字符串
输出描述
明文字符串
备注
翻译后的文本长度在100以内
用例
输入 | 20*19*20* |
输出 | tst |
说明 | 无 |
题目解析
本题有多种解题思路,我的思路是利用字符串替换操作。
即将如下密文和明文进行按照顺序依次映射替换
- "26*" → "z"
- "25*" → "y"
- ...
- "10*" → "j"
- "9" → "i"
- ...
- "1" → "a"
这里优先将从“26*” ~ "10*" 开始映射替换,比如题目用例:
20*19*20*
如果优先进行 "1" ~ “9” 密文的映射替换,则会产生错误答案。
import Foundation func ODTest_51() { print("输入描述") print("“密文”字符串") var miwen = (readLine() ?? "") for i in (1 ... 26).reversed() { let code = Int(Character("a").asciiValue ?? 0) + i - 1 guard let scalar = UnicodeScalar(code) else { return } if i > 9 { miwen = miwen.replacingOccurrences(of: "\(i)*", with: "\(Character(scalar))") } else { miwen = miwen.replacingOccurrences(of: "\(i)", with: "\(Character(scalar))") } } print("输出描述") print("明文字符串") print("\(miwen)") }
2024华为OD机试卷题 文章被收录于专栏
本专栏给大家提供了华为2024最新华为OD 题目汇总。华为OD机试刷题记录机考算法题库,帮助你上岸华为。提供C++/Java、JavaScript、Python四种语言的解法。