题目传送门

题目

您将得到一个长度为 \(N\) 的字符串 \(S=S_1 S_2\dots S_n\) ,该字符串由小写英文字母组成。

您将在 \(S\) 上执行一次以下操作:选择长度至少为 \(1\) 的 \(S\) 的连续子字符串,并将其循环左移 \(1\) 。即,选择整数 \(1 \leq l \leq r \leq N\) ,在 \(S\) 的第 \(r\) 个字符的右侧插入 \(S_l\) 然后删除 \(S\) 的第 \(l\) 个字符。例如:将abcde中的cd循环左移一次,就会得到acdbe

在所有可能的字符串中找出 \(S\) 在运算后可以成为的字典序最小的字符串。

给出了 \(T\) 个测试用例,因此请解决每个测试用例。

\(1 \leq T,N \leq 10^5\)

\(S\) 是由小写英文字母组成的长度为 \(N\) 的字符串。

单个输入文件中所有测试用例的 \(N\) 的总和最多为 \(10^5\) 。

思路

比较容易想到思路的一道题。因为只执行一次,所以贪从前往后贪心的看那些字母可以往前移,当然,越前面肯定越好。所以遇到第一个可以交换的字母,就考虑在它身后连续的字符串能否跟着它一起向前移动(具体看代码)。

代码

#include <bits/stdc++.h>

using namespace std;
int n, j;
string s; inline int read() {
int x;
cin >> x;
return x;
} inline void solve() {
n = read();
cin >> s;
s = " " + s;
j = 1;
for (int i = 1; i <= n; i++)
if (s[i] > s[i + 1]) {
while (j < i) {
cout << s[j];
j++;
}
j++;
while (j <= n && s[j] <= s[i]) {
cout << s[j];
j++;
}
cout << s[i];
while (j <= n) {
cout << s[j];
j++;
}
break;
}
cout << endl;
return;
} signed main() {
cin.tie(nullptr)->sync_with_stdio(false);
int _ = read();
while (_--) solve();
return 0;
}

[题解] AT_ABC409_D String Rotation的更多相关文章

  1. [CareerCup] 1.8 String Rotation 字符串的旋转

    1.8 Assume you have a method isSubstring which checks if one word is a substring of another. Given t ...

  2. PAT甲题题解-1050. String Subtraction (20)-水题

    #include <iostream> #include <cstdio> #include <string.h> #include <algorithm&g ...

  3. 《LeetBook》leetcode题解(8): String to Integer (atoi) [E]——正负号处理

    我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...

  4. LeetCode题解 #8 String to Integer (atoi)

    又是一道恶心的简单题. 一开始没想到这么多情况的,幸好LeetCode是个很人性化的oj,能让你知道你在哪个case上错了,否则一辈子都过不了. 考虑不周到只能一个个补了. 列举一下恶心的case / ...

  5. leetcode个人题解——#8 string to integer

    第八题 class Solution { public: int myAtoi(string str) { ; ; ; while(str[i] == ' ')i++; if (str[i] == ' ...

  6. 题解-Codeforces710F String Set Queries

    咕了好久没更博客,最近得知可以去冬眠营玩耍,还可以搭顺风车回广州过年 (最近做到的比较有意思的题目:bzoj3958.hihocoder1419) Problem Codeforces-710F--洛 ...

  7. PAT 甲级 1055 The World's Richest (25 分)(简单题,要用printf和scanf,否则超时,string 的输入输出要注意)

    1055 The World's Richest (25 分)   Forbes magazine publishes every year its list of billionaires base ...

  8. CareerCup All in One 题目汇总 (未完待续...)

    Chapter 1. Arrays and Strings 1.1 Unique Characters of a String 1.2 Reverse String 1.3 Permutation S ...

  9. CC150 上面重要的题目总结

    第一章 : 全部重要 (1.6, 1.7 Leetcode上有). 1.5 面A碰到 (string compression) 1.7面Z碰到 (set 0) 1.8面Bigfish碰到 (strin ...

  10. Unity3d项目合作 场景的合并和还原

    Unity3d项目合作  场景的合并和还原 特别声明:转载自Unity3D研究院 如何侵犯版权,请通知我删除! 摘要: 导出Unity场景的所有游戏对象信息,一种是XML一种是JSON.本篇文章我们把 ...

随机推荐

  1. 【经验】微信小程序开发 云后台比价(自带云开发、leancloud、bmob)(2022/10/31更新)

    目录 前言 1. 免费配额 2. 超过额度时收费情况 3. 另外的价钱 总结 前言 作为前端开发者,没有购买云服务器的习惯,在只需要使用数据库的情况下,开发微信小程序完全可以用现在免费的云后台. 常用 ...

  2. 【HUST】网安|编译原理实验|实验四攻略

    [实验代码及报告地址:Gitee传送门](已关闭传送大门,原因是抄袭过多,如需参考,请直接看博客,虽然下一届内容会变了) 不擅长写报告昂,很多地方能省全省了. 助力来年编译原理加大难度!(hhh) M ...

  3. Gin 实现基础 CRUD 接口

    前面2篇讲了关于 gin + mysql + jwt + rbac 等基础 web搭建操作, 主要目的还是学习 go 语言的一些应用工具, 然后本篇继续来实现一个名为 notice 的公告模块, 包含 ...

  4. MFC对话框显示时背景闪烁

    在显示一个对话框时,可以在WM_PAINT消息处理函数中绘制窗口的背景色.但会出现一种情况,在还未执行完OnPaint函数,对话框已经先显示出白色窗体,如下: 还未绘制窗体,背景色先被显示. 解决办法 ...

  5. .NET中使用CommonOpenFileDialog【打开文件夹】

    install-package WindowsAPICodePack var folderDialog = new CommonOpenFileDialog() { Title = "xxx ...

  6. 【中文】【吴恩达课后编程作业】Course 1 - 神经网络和深度学习 - 第二周作业

    [吴恩达课后编程作业]Course 1 - 神经网络和深度学习 - 第二周作业 - 具有神经网络思维的Logistic回归 上一篇:[课程1 - 第二周测验]※※※※※ [回到目录]※※※※※下一篇: ...

  7. FFmpeg开发笔记(六十三)FFmpeg使用vvenc把视频转为H.266编码

    ​前面的两篇文章分别介绍了如何在Linux环境和Windows环境给FFmpeg集成H.266的编码器vvenc,接下来利用ffmpeg把视频文件转换为VVC格式,观察新生成的vvc视频能否正常播放. ...

  8. JDBC连接数据库增删改查实例

    查询所有 dao层代码: package example; import java.sql.Connection; import java.sql.DriverManager; import java ...

  9. Jenkins概述及Linux系统中安装

    概述 官网:https://www.jenkins.io/ GitHub地址:https://github.com/jenkinsci/jenkins Jenkins是一个用Java编写的开源的持续集 ...

  10. map-HashMap

    HashMap 图片~~~ 其他常见的map结构 常见的map结构 常用的Map结构有:hashMap(最常用).hashTable.LinkedHashMap.TreeMap(对存入的键值进行排序) ...