华为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四种语言的解法。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务