题解:P12984 [GCJ 2022 #1A] Double or One Thing
思路
从左往右对字符串
代码
#include<bits/stdc++.h>
using namespace std;
string s1,s2;
int main(){
int T;
cin>>T;
for(int i=1;i<=T;i++){
s1="";
s2="";
cin>>s1;
int len=s1.length();
for(int j=0;j<len-1;j++){
if(s1[j]<s1[j+1]){ // 第一种情况。
s2+=s1[j];
s2+=s1[j];
}else if(s1[j]>s1[j+1]){ // 第二种情况。
s2+=s1[j];
}else{ // 第三种情况。
int k=j;
while(s1[j]==s1[k]){
k++;
}
if(s1[j]<s1[k]){
s2+=s1[j];
s2+=s1[j];
}else{
s2+=s1[j];
}
}
}
s2+=s1[len-1]; // 加上最后一个没判断的字符。
cout<<"Case #"<<i<<": "<<s2<<endl;
}
return 0;
}