当前位置:网站首页>力扣解法汇总899-有序队列
力扣解法汇总899-有序队列
2022-08-03 18:55:00 【失落夏天】
目录链接:
力扣编程题-解法汇总_分享+记录-CSDN博客
GitHub同步刷题项目:
https://github.com/September26/java-algorithms
原题链接:力扣
描述:
给定一个字符串 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 只由小写字母组成。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/orderly-queue
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
* 解题思路: * 看k的大小,如果k大于1,那么其实就等于插入排序,所以经过若干轮的排序后,一定能形成最小字典字符串。 * 如果k=1,则找出字典上最小字符串即可
代码:
public class Solution899 {
public String orderlyQueue(String s, int k) {
StringBuilder builder = new StringBuilder();
char[] chars = s.toCharArray();
if (k > 1) {
int[] charNums = new int[26];
for (int i = 0; i < chars.length; i++) {
char aChar = chars[i];
charNums[aChar - 'a']++;
}
for (int i = 0; i < charNums.length; i++) {
int num = charNums[i];
if (num == 0) {
continue;
}
for (int n = 0; n < num; n++) {
builder.append((char) (i + 'a'));
}
}
return builder.toString();
}
for (int i = 0; i < chars.length; i++) {
if (builder.length() == 0) {
builder.append(s);
continue;
}
for (int j = 0; j < builder.length(); j++) {
int newIndex = i + j;
newIndex = newIndex >= builder.length() ? newIndex - builder.length() : newIndex;
char newChar = chars[newIndex];
char lastMinChar = builder.charAt(j);
if (newChar == lastMinChar) {
continue;
}
if (newChar > lastMinChar) {
break;
}
builder.setLength(0);
builder.append(s.substring(i));
builder.append(s, 0, i);
}
}
return builder.toString();
}
}
边栏推荐
- 使用range-based for循环的注意事项
- 微信小程序分享功能
- excel写入不完全sheet.append方法(openpyxl)
- 剑指Offer 56.数组中数字出现的次数
- 【C语言学习笔记(七)】C语言重定向输入与输出
- [Azure Event Hub] Create Event Hub Consume Client + Custom Event Position with Azure AD Authentication
- POJ 1465 Multiple(用BFS求能组成的n的最小倍数)
- Shell:循环语句
- CC2530_ZigBee+华为云IOT:设计一套属于自己的冷链采集系统
- 【HCIP】MPLS实验
猜你喜欢
随机推荐
Zhong Hua, senior architect of Ali: China-Taiwan strategic thinking and architecture practice; including internal implementation manual
5v2.1a给5v2a充电行吗
BinaryIndexedTrees树状数组
【C语言学习笔记(七)】C语言重定向输入与输出
PHP基础笔记-NO.2
C#爬虫之通过Selenium获取浏览器请求响应结果
YAML中多行字符串的配置方法:|+、 |、 |-、 >+、 >、 >-的区别
SQL代码需要供其他人复用,为什么传统的复制代码不可靠?
实现博客营销有哪些技巧
typescript学习笔记
丙二醇二乙酸酯(Propylene Glycol Diacetate)
Bytes to beat three sides take offer: network + GC + + IO + redis + JVM red-black tree + data structure, to help you quickly into the giant!!!!!
POJ 1465 Multiple(用BFS求能组成的n的最小倍数)
idea——同一项目开启多个实例(不同端口)
Flask框架——项目可安装化
【WPS-OFFICE-Word】 WPS中样式的运作原理?样式自动更新、自动改变如何处理?样式的管理方法?
软件测试回归案例,什么是回归测试?
PHP Basic Notes-NO.2
[Notes] Introduction to machine learning
OSError: [WinError 123] 文件名、目录名或卷标语法不正确