社区讨论
求助
灌水区参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lo1ary95
- 此快照首次捕获于
- 2023/10/22 17:59 2 年前
- 此快照最后确认于
- 2023/11/02 18:18 2 年前
题目描述
zlt
在玩一个有趣的字符游戏,他现在有一个只包含 x,y,z
的字符串,对于任意两个相邻的字符,如果分别是 x,y
或者分别是 y,z
zlt
可以选择把他们交换,比如以下是合法的交换:
xzyxyz→xzyxzy(交换了第5位的y和第6位的z)
(
交
换
了
第
5
位
的
和
第
6
位
的
)
xzyxyz→xzxyyz(交换了第3位的y和第4位的x)
(
交
换
了
第
3
位
的
和
第
4
位
的
)
以下是非法交换:
xzyxyz→zxyxyz(交换了x和z)
(
交
换
了
和 ) xzyxyz→yzyxxz(交换了不相邻的字符) ( 交 换 了 不 相 邻 的 字 符 ) zlt 想知道经过若干次合法交换后,字典序最小的字符串是什么。
和 ) xzyxyz→yzyxxz(交换了不相邻的字符) ( 交 换 了 不 相 邻 的 字 符 ) zlt 想知道经过若干次合法交换后,字典序最小的字符串是什么。
输入格式
一个只包含字符 x,y,z
的字符串 s
。
输出格式
输出经过若干次合法交换后,字典序最小的字符串。
这是代码
CPP#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
char c;
getline(cin,s);
for(int i=0;i<s.size();i++){
if((s[i+1]=='y'&&s[i]=='x')||(s[i+1]=='x'&&s[i]=='y')){
c=s[i+1];
s[i+1]=s[i];
s[i]=c;
}
}
for(int i=0;i<s.size();i++){
if((s[i+1]=='z'&&s[i]=='y')||(s[i+1]=='y'&&s[i]=='z')){
c=s[i+1];
s[i+1]=s[i];
s[i]=c;
}
}
cout<<s;
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...