题目链接
https://www.nowcoder.com/test/question/42852fd7045c442192fa89404ab42e92?pid=16516564&tid=44114166
或
https://blog.csdn.net/qq_37130607/article/details/108483164
解题思路
- 状态机;
- 如下图:
3. 编码
代码
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
int N;
cin >> N;
vector<string> ans;
while(N--) {
string input;
cin >> input;
if(input.size() <= 2)
ans.push_back(input);
string tempAns(1, input[0]);
int state = 0;
for(int i = 1; i < input.size(); ++i) {
if(state == 0 && input[i] != input[i-1])
{
tempAns.push_back(input[i]);
}
else if(state == 0 && input[i] == input[i-1])
{
tempAns.push_back(input[i]);
state = 1;
}
else if(state == 1 && input[i] != input[i-1])
{
tempAns.push_back(input[i]);
state = 2;
}
else if(state == 2 && input[i] != input[i-1])
{
tempAns.push_back(input[i]);
state = 0;
}
else
{
continue;
}
}
ans.push_back(tempAns);
}
for(int i = 0; i < ans.size(); ++i)
cout << ans[i] <<endl;
return 0;
}