题目
题目描述
****会对机密文本信息会进行加密,加密方法如下:对于一个全为小写字母的字符串,做如下操作。
第一步:将所有连续的相同字母都缩减为一个字母。如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;
}