【基础算法】 简单密码问题

104 阅读3分钟

🌹作者:云小逸
📝个人主页:云小逸的主页
📝Github:云小逸的Github
🤟motto:要敢于一个人默默的面对自己,==强大自己才是核心==。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前,其次就是现在!学会自己和解,与过去和解,努力爱自己。==希望春天来之前,我们一起面朝大海,春暖花开!==🤟 👏专栏:C++👏 👏专栏:Java语言👏👏专栏:Linux学习👏
👏专栏:C语言初阶👏👏专栏:数据结构👏👏专栏:备战蓝桥杯👏

@TOC


前言

今天我们继续学习算法,加油。这篇文章写的是计数问题。希望这篇可以有幸帮助到你,码字不易,请多多支持。 在这里插入图片描述


题目描述

给定一个密码字符串,按照规则对每个字符进行转换,输出转换后的字符串。

规则是:对于明文中的每个字符,将它用它字母表中后 5 位对应的字符来代替,这样就得到了密文。比如字符 A 用 F 来代替。密文中出现的字母都是大写字母。

注意,密文中也包括非字母的字符,对这些字符不用进行解码。

输入格式

输入中的测试数据不超过 100100 组。每组数据都有如下的形式,而且各组测试数据之间没有空白的行。

一组测试数据包括三部分:

起始行 - 一行,包括字符串 START。 密文 - 一行,给出密文,密文不为空,而且其中的字符数不超过 200200。 结束行 - 一行,包括字符串 END。 在最后一组测试数据之后有一行,包括字符串 ENDOFINPUT。

输出格式

对每组数据,都有一行输出,给出密文对应的明文。

输入样例

START
NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX
END
START
N BTZQI WFYMJW GJ KNWXY NS F QNYYQJ NGJWNFS ANQQFLJ YMFS XJHTSI NS WTRJ
END
START
IFSLJW PSTBX KZQQ BJQQ YMFY HFJXFW NX RTWJ IFSLJWTZX YMFS MJ
END
ENDOFINPUT

输出样例

IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES
I WOULD RATHER BE FIRST IN A LITTLE IBERIAN VILLAGE THAN SECOND IN ROME
DANGER KNOWS FULL WELL THAT CAESAR IS MORE DANGEROUS THAN HE

解题思路

本题的思路也比较简单,就是对每个字符进行转换。对于大写字母,将其转换成往后第五个字母;对于其他字符,不进行转换,直接输出。

具体来说,我们可以使用一个 for 循环,遍历输入字符串中的每个字符,然后对于每个字符,分别进行以下处理:

  1. 如果是大写字母,则将其转换成往后第五个字母,这可以通过将其加上 5,然后对 26 取模实现。
  2. 如果是其他字符,则直接输出。

最后,我们将处理后的字符输出即可。

完整代码如下:

#include <iostream>

using namespace std;

int main()
{
    string a, b, c;
    while (cin >> a)
    {
        getchar();
        if (a == "ENDOFINPUT") return 0;
        getline(cin, b);
        getchar();
        cin >> c;
        getchar();
        int n = b.size();
        for (int i = 0; i < n; i ++)
            if (b[i] >= 'A' && b[i] <= 'Z')
                b[i] = (b[i]-'A'-5 +26) % 26 + 'A';
        cout << b << endl;
    } 
    return 0;
}


最后

十分感谢你可以耐着性子把它读完和我可以坚持写到这里,送几句话,对你,也对我:

1.把时间尺度拉长,拉长十年看当下

2.不说负面情绪,只描述事实;

3.越专注于过好自己,能量和幸运越会照顾你; 只解决问题,不做没有意义的担心,输了就认;

4.学会原谅自己,要允许自己做错事,允许自己出现情绪波动,我知道你已经很努力很努力在做好了

5.所有你害怕的、想逃避的事情,最终都要面对,既然这样不如选择坦然面对。即使结果不如人愿,没关系,至少这个过程是享受的,而不是一路带着恐惧和害怕。

最后如果觉得我写的还不错,请不要忘记==点赞==✌,==收藏==✌,加==关注==✌哦(。・ω・。)

愿我们一起加油,奔向更美好的未来,愿我们从懵懵懂懂的一枚==菜鸟==逐渐成为==大佬==。加油,为自己点赞!