题解 | 交换到最大

交换到最大

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;
}

全部评论

相关推荐

02-26 13:56
已编辑
重庆财经学院 Java
King987:你有实习经历,但是写的也太简单了,这肯定是不行的,你主要要包装实习经历这一块,看我的作品,你自己包装一下吧,或者发我,我给你出一期作品
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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