专栏文章
题解:P12984 [GCJ 2022 #1A] Double or One Thing
P12984题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miowwrgt
- 此快照首次捕获于
- 2025/12/03 02:29 3 个月前
- 此快照最后确认于
- 2025/12/03 02:29 3 个月前
思路
从左往右对字符串 进行高亮操作,使结果为所有可能的字符串中字典序最小的一个。其中高亮共有 种情况:
- 为了让字典序更小,此处肯定需要进行高亮操作。
- 与第 种情况相反,此处不需要进行高亮操作。
- 这种情况比较特殊,我们需要找到 之后第一个不是 的字符,这里称作 ,然后根据上两条规则将 和 进行比较,决定是否进行高亮操作。
代码
CPP#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;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...