10071.解密

题目

题目描述

****会对机密文本信息会进行加密,加密方法如下:对于一个全为小写字母的字符串,做如下操作。

第一步:将所有连续的相同字母都缩减为一个字母。如xxyyyyy被替换为xy。

第二步:随机寻找一个位置,插入两个相同的小写字母。并且,重复这个步骤很多次。

加密过程实例如下:比如,

初始字符串:wwwwwoshiiikkkoaalaa

第一步加密之后得到:woshikoala

插入c后得到:woccshikoala

插入h后得到:wochhcshikoala

插入b后得到:wochhcshikoalabb

插入a后得到:wochaahcshikoalabb

插入a后得到:wochaahcshikoalabaab

插入o后得到:wochaooahcshikoalabaab

请编写基础的解密程序,输入经过第一步、第二步加密后的字符串,输出第一步加密后的字符串。

即从wochaooahcshikoalabaab还原出woshikoala。

格式

输入格式

输入包含一行。

第一行一个字符串,表示经过第一步和第二步加密后的字符串。

输出格式

输出包含一行。

第一行一个字符串,表示执行第一步之后的字符串。

样例

样例输入1
wwstdaadierlitz 
样例输出1
stierlitz 

思路

众所周知

   单词是从左向右读的,而本题要TYWZ一直会将其他的名称

难点

   如何在结尾不输出空格?

解决方法

1.在输出之前跑一遍;

2.在输入时存入一个一维数组;

(如果各位大佬有更简单的方法,请赐教)

代码

#include <bits/stdc++.h>
using namespace std;
char a[1000005];
int z = 0;
int main() {
    //freopen("unlock.in", "r", stdin);
    //freopen("unlock.out", "w", stdout);
    while (cin >> a[z]) {
        if (a[z] == a[z - 1] && z != 0)
            z--;
        else
            z++;
    }
    for (int i = 0; i <= z - 1; i++) {
        cout << a[i];
    }
    return 0;
}

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值