题目描述:
题目解读:
对字符串 a 进行加密后得到j加密字符串 s 。
加密规则为:
在字符串 a 的每个字符之后,添加任意(可能为零)数量的小写字母,与字符本身不同。
在每次这样的添加之后,我们将原字符添加在已添加的任意(可能为零)数量的小写字母后。
给出加密字符串 s,求出加密之前的字符串a。
解题思路:
在字符串 a 的每个字符之后,必定会存在与之相同的字符,且两个字符之间的所有字符就是被添加的字符。所以从头遍历字符串s,输出第一个字符s[0],然后寻找和s[0]内容一致的字符s[x],输出该字符的下一位s[x+1],再找和s[x+1]一样的字符...循环往复即可。
代码实现:
#include <stdio.h>
#include<iostream>
using namespace std;
void Solve() {
int n;
int i = 0;
char last;
string s;
cin >> n >> s;
last = s[0];
for (i = 1; i < n; i++) {
if (s[i] == last) {
cout << last;
last = s[++i];
}
}
cout << endl;
return;
}
int main() {
int t;
cin >> t;
while (t--) Solve();
return 0;
}
遇到的错误: