题解 | 交换到最大

交换到最大

https://www.nowcoder.com/practice/73fd35bbfaa5483d8aa8b03cd27887a8

#include<bits/stdc++.h>
using namespace std;

using ll=long long;
using ull=unsigned long long;
using i128=__int128_t;
using u128=__uint128_t;
using ld=long double;

void solve()
{
	string s;//我们可以很容易的想到 依据题中的规则 字典序最大的字符串 后一位减一一定要小于等于前一位 否则 就可以进行交换 使字典序更大
	cin >> s;
	for(int i=1;i<s.size();i++)//因此 我们只需要遍历字符串 让每一位尽可能的往前交换即可
	{
		for(int j=i;j>0;j--)
		{
			if(s[j]-1>s[j-1])
			{
				s[j]-=1;
				swap(s[j],s[j-1]);
			}
			else break;
		}
	}
	cout << s << "\n";
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int t=1;
	cin >> t;
	
	while(t--)
	{
		solve();
	}
	return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
03-19 10:38
实力求职者:真的绷不住了,第一张霸总人设,第二张求生欲拉满
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务