当前位置:网站首页>leetcode 899. 有序队列
leetcode 899. 有序队列
2022-08-03 20:06:00 【会编程的露娜】
给定一个字符串 s 和一个整数 k 。你可以从 s 的前 k 个字母中选择一个,并把它加到字符串的末尾。
返回 在应用上述步骤的任意数量的移动后,字典上最小的字符串 。
示例 1:
输入:s = “cba”, k = 1
输出:“acb”
解释:
在第一步中,我们将第一个字符(“c”)移动到最后,获得字符串 “bac”。
在第二步中,我们将第一个字符(“b”)移动到最后,获得最终结果 “acb”。
示例 2:
输入:s = “baaca”, k = 3
输出:“aaabc”
解释:
在第一步中,我们将第一个字符(“b”)移动到最后,获得字符串 “aacab”。
在第二步中,我们将第三个字符(“c”)移动到最后,获得最终结果 “aaabc”。
提示:
1 <= k <= S.length <= 1000
s 只由小写字母组成。
思路:
当k==1时,将原字符串看成一个环,从开头到结尾每次都将第一个字符放在末尾,保存这些字符中的字典序最小的情况,直接模拟。
当k>=2时,经过有限次的操作,一定可以变成升序,因为我们每次在前k个中都可以选择最大的那个放在最后,这样实际操作起来很麻烦,但和sort排好序的结果是一样的,所以直接sort返回即可。
class Solution {
public:
string orderlyQueue(string s, int k) {
if(k>1){
sort(s.begin(),s.end());
return s;
}
string ans=s;
for(int i=0;i<s.size();++i){
s=string{
s.begin()+1,s.end()}+s[0];
ans=min(ans,s);
}
return ans;
}
};
边栏推荐
猜你喜欢
力扣206-反转链表——链表
【leetcode】剑指 Offer II 009. 乘积小于 K 的子数组(滑动窗口、双指针)
RNA核糖核酸修饰荧光染料|HiLyte Fluor 488/555/594/647/680/750标记RNA核糖核酸
友宏医疗与Actxa签署Pre-M Diabetes TM 战略合作协议
【飞控开发高级教程4】疯壳·开源编队无人机-360 度翻滚
调用EasyCVR云台控制接口时,因网络延迟导致云台操作异常该如何解决?
Matlab paper illustration drawing template No. 42 - bubble matrix diagram (correlation coefficient matrix diagram)
Go语言类型与接口的关系
ESP8266-Arduino编程实例-BH1750FVI环境光传感器驱动
node版本切换工具NVM以及npm源管理器nrm
随机推荐
dpkg强制安装软件
单调栈及其应用
php根据两点经纬度计算距离
alicloud3搭建wordpress
演讲议题及嘉宾重磅揭晓,TDengine 开发者大会推动数据技术“破局”
危化企业双重预防机制数字化建设进入全面实施阶段
WPF .cs中使用资源文件中的ControlTemplate或Style并找到控件
Redis 内存满了怎么办?这样置才正确!
调用EasyCVR接口时视频流请求出现404,并报错SSL Error,是什么原因?
C中的数据存储
第三方验收测试报告有什么作用?如何获取权威软件测试报告?
染料修饰核酸RNA|[email protected] 610/[email protected] 594/Alexa 56
Auto.js脚本程序打包
MySQL Basics
Edge box + time series database, technology selection behind Midea's digital platform iBuilding
RNA核糖核酸修饰荧光染料|HiLyte Fluor 488/555/594/647/680/750标记RNA核糖核酸
PHP according to the longitude and latitude calculated distance two points
In-depth understanding of JVM-memory structure
redis常用命令,HSET,XADD,XREAD,DEL等
List类的超详细解析!(超2w+字)