密码解密 - 华为OD统一考试(C卷)

这篇具有很好参考价值的文章主要介绍了密码解密 - 华为OD统一考试(C卷)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

OD统一考试(C卷)

分值: 100分

题解: Java / Python / C++

密码解密 - 华为OD统一考试(C卷),华为od,java,算法,机试,笔试,python,c++

题目描述

给定一段 “密文”字符串 s ,其中字符都是经过 “密码本” 映射的,现需要将“密文”解密并且输出。

映射的规则:

  • ( ai ) 分别用(19 )表示;
  • (jz ) 分别用(10∗26∗ )表示。

约束:映射始终唯一。

输入描述

“密文”字符串

输出描述

明文字符串

示例1

输入:
20*19*20*

输出:
tst

说明:
翻译后的文本长度在 100 以内。

题解

基本思路是从密文字符串的末尾开始遍历,根据规则进行解密,并最终输出解密后的明文字符串。

关键点:

  • 对于包含 ‘*’ 的情况,解析前两个字符,进行相应的解密操作。
  • 对于不包含 ‘*’ 的情况,进行简单的解密操作。
  • 在遍历过程中,逐步构建解密后的密码。
  • 最后,反转密码字符串,因为是从末尾开始遍历的。

Java

import java.util.Scanner;

/**
 * @author code5bug
 */
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        // 读取输入文本
        String text = in.next();

        // 存储解密后的密码
        StringBuilder pwd = new StringBuilder();

        for (int i = text.length() - 1; i >= 0; ) {
            if (text.charAt(i) == '*') {
                char c = (char) (Integer.parseInt(text.substring(i - 2, i)) - 10 + 'j');
                pwd.append(c);
                i -= 3;
            } else {
                char c = (char) (text.charAt(i) - '1' + 'a');
                pwd.append(c);
                i -= 1;
            }
        }

        // 输出解密后的密码
        System.out.println(pwd.reverse().toString());
    }
}

Python

# 读取输入文本
text = input()

# 存储解密后的密码
pwd = []

# 从字符串末尾开始遍历
i = len(text) - 1
while i >= 0:
    if text[i] == '*':
        # 如果当前字符是 '*',则解析前两个字符并进行解密
        num = int(text[i - 2:i])
        c = chr(num - 10 + ord('j'))
        pwd.append(c)
        i -= 3
    else:
        # 如果当前字符不是 '*',则进行简单解密
        c = chr(ord(text[i]) - ord('1') + ord('a'))
        pwd.append(c)
        i -= 1

# 输出解密后的密码
print(''.join(pwd[::-1]))

C++

#include <bits/stdc++.h>
using namespace std;

int main(){
    string text;
    cin >> text;
    
    string pwd;
    int n = text.length();
    for(int i = n - 1; i >= 0; ){
        // 遇到 * 肯定解密 j - z
        if(text[i] == '*'){
            char c = stoi(text.substr(i - 2, 2)) - 10 + 'j';
            pwd.push_back(c);
            i -= 3;
        }else{ // 否则 a - i
            char c = text[i] - '1' + 'a';
            pwd.push_back(c);
            i -= 1;
        }
    }

    reverse(pwd.begin(), pwd.end());

    cout << pwd << endl;

    return 0;
}

相关练习题

题号 题目 难易
LeetCode 2325 2325. 解密消息 简答

‍❤️‍华为OD机试面试交流群每日真题分享): 加V时备注“华为od加群”

🙏整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏文章来源地址https://www.toymoban.com/news/detail-836163.html

到了这里,关于密码解密 - 华为OD统一考试(C卷)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【华为OD机考 统一考试机试C卷】素数之积/RSA加密算法(C++ Java JavaScript Python C语言)

    目前在考C卷,经过两个月的收集整理, C卷真题已基本整理完毕 抽到原题的概率为2/3到3/3, 也就是最少抽到两道原题。 请注意:大家刷完C卷真题,最好要把B卷的真题刷一下,因为C卷的部分真题来自B卷。 另外订阅专栏还可以联系笔者开通在线OJ进行刷题,提高刷题效率。

    2024年03月21日
    浏览(45)
  • 华为OD机试真题-开源项目热榜--Java-OD统一考试(C卷)

    题目描述: 某个开源社区希望将最近热度比较高的开源项目出一个榜单,推荐给社区里面的开发者。对于每个开源项目,开发者可以进行关注(watch)、收藏(star)、fork、提issue、提交合并请求(MR)等。 数据库里面统计了每个开源项目关注、收藏、fork、issue、MR的数量,开源项目的

    2024年01月19日
    浏览(51)
  • 【华为OD统一考试(B卷)】统计监控、需要打开多少监控器,JAVA 题解 | 华为OD机试考题

    华为 od 2023 | 什么是华为 od,od 薪资待遇,od 机试题清单 华为 OD 机试真题大全,用 Python 解华为机试题 | 机试宝典 【华为 OD 机试】全流程解析+经验分享,题型分享,防作弊指南 华为 od 机试,独家整理 已参加机试人员的实战技巧 参加华为 od 机试,一定要注意不要完全背诵代码

    2024年02月12日
    浏览(48)
  • 【华为OD机考 统一考试机试C卷】螺旋数字矩阵(Java题解)

    2023年11月份,华为官方已经将 华为OD机考:OD统一考试(A卷 / B卷)切换到 OD统一考试(C卷)和 OD统一考试(D卷) 。根据考友反馈:目前抽到的试卷为B卷或C卷/D卷,其中C卷居多 ,按照之前的经验C卷D卷部分考题会复用A卷/B卷题,博主正积极从考过的同学收集C卷和D卷真题,

    2024年02月02日
    浏览(64)
  • 华为OD机试真题-寻找身高相近的小朋友-Java-OD统一考试(C卷)

    题目描述: 小明今年升学到小学一年级,来到新班级后发现其他小朋友们身高参差不齐,然后就想基于各小朋友和自己的身高差对他们进行排序,请帮他实现排序。 输入描述: 第一行为正整数H和N,0H200,为小明的身高,0N50,为新班级其他小朋友个数。 第二行为N个正整数

    2024年01月19日
    浏览(46)
  • 华为OD机试真题-用连续自然数之和来表达整数-Java-OD统一考试(C卷)

    题目描述: 一个整数可以由连续的自然数之和来表示。给定一个整数,计算该整数有几种连续自然数之和的表达式,且打印出每种表达式。 输入描述: 一个目标整数T (1 =T= 1000) 输出描述: 该整数的所有表达式和表达式的个数。如果有多种表达式,输出要求为: 1.自然数个数

    2024年01月16日
    浏览(51)
  • 【华为OD机考 统一考试机试C卷】 找座位(C++ Java JavaScript Python)

    目前在考C卷,经过两个月的收集整理, C卷真题已基本整理完毕 抽到原题的概率为2/3到3/3, 也就是最少抽到两道原题。 请注意:大家刷完C卷真题,最好要把B卷的真题刷一下,因为C卷的部分真题来自B卷。 另外订阅专栏还可以联系笔者开通在线OJ进行刷题,提高刷题效率。

    2024年02月04日
    浏览(56)
  • 【华为OD机考 统一考试机试C卷】找单词(C++ Java JavaScript Python)

    2023年11月份,华为官方已经将 华为OD机考:OD统一考试(A卷 / B卷)切换到 OD统一考试(C卷)和 OD统一考试(D卷) 。根据考友反馈:目前抽到的试卷为B卷或C卷/D卷,其中C卷居多 ,按照之前的经验C卷D卷部分考题会复用A卷/B卷题,博主正积极从考过的同学收集C卷和D卷真题,

    2024年02月02日
    浏览(54)
  • 【华为OD机考 统一考试机试C卷】分月饼(C++ Java JavaScript Python)

    目前在考C卷,经过两个月的收集整理, C卷真题已基本整理完毕 抽到原题的概率为2/3到3/3, 也就是最少抽到两道原题。 请注意:大家刷完C卷真题,最好要把B卷的真题刷一下,因为C卷的部分真题来自B卷。 另外订阅专栏还可以联系笔者开通在线OJ进行刷题,提高刷题效率。

    2024年02月02日
    浏览(54)
  • 【华为OD机考 统一考试机试C卷】高效货运(C++ Java JavaScript Python)

    目前在考C卷,经过两个月的收集整理, C卷真题已基本整理完毕 抽到原题的概率为2/3到3/3, 也就是最少抽到两道原题。 请注意:大家刷完C卷真题,最好要把B卷的真题刷一下,因为C卷的部分真题来自B卷。 另外订阅专栏还可以联系笔者开通在线OJ进行刷题,提高刷题效率。

    2024年02月03日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包