[题解] AT_ABC409_D String Rotation
题目
您将得到一个长度为 \(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的更多相关文章
- [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 ...
- PAT甲题题解-1050. String Subtraction (20)-水题
#include <iostream> #include <cstdio> #include <string.h> #include <algorithm&g ...
- 《LeetBook》leetcode题解(8): String to Integer (atoi) [E]——正负号处理
我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...
- LeetCode题解 #8 String to Integer (atoi)
又是一道恶心的简单题. 一开始没想到这么多情况的,幸好LeetCode是个很人性化的oj,能让你知道你在哪个case上错了,否则一辈子都过不了. 考虑不周到只能一个个补了. 列举一下恶心的case / ...
- leetcode个人题解——#8 string to integer
第八题 class Solution { public: int myAtoi(string str) { ; ; ; while(str[i] == ' ')i++; if (str[i] == ' ...
- 题解-Codeforces710F String Set Queries
咕了好久没更博客,最近得知可以去冬眠营玩耍,还可以搭顺风车回广州过年 (最近做到的比较有意思的题目:bzoj3958.hihocoder1419) Problem Codeforces-710F--洛 ...
- 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 ...
- CareerCup All in One 题目汇总 (未完待续...)
Chapter 1. Arrays and Strings 1.1 Unique Characters of a String 1.2 Reverse String 1.3 Permutation S ...
- CC150 上面重要的题目总结
第一章 : 全部重要 (1.6, 1.7 Leetcode上有). 1.5 面A碰到 (string compression) 1.7面Z碰到 (set 0) 1.8面Bigfish碰到 (strin ...
- Unity3d项目合作 场景的合并和还原
Unity3d项目合作 场景的合并和还原 特别声明:转载自Unity3D研究院 如何侵犯版权,请通知我删除! 摘要: 导出Unity场景的所有游戏对象信息,一种是XML一种是JSON.本篇文章我们把 ...
随机推荐
- 【经验】微信小程序开发 云后台比价(自带云开发、leancloud、bmob)(2022/10/31更新)
目录 前言 1. 免费配额 2. 超过额度时收费情况 3. 另外的价钱 总结 前言 作为前端开发者,没有购买云服务器的习惯,在只需要使用数据库的情况下,开发微信小程序完全可以用现在免费的云后台. 常用 ...
- 【HUST】网安|编译原理实验|实验四攻略
[实验代码及报告地址:Gitee传送门](已关闭传送大门,原因是抄袭过多,如需参考,请直接看博客,虽然下一届内容会变了) 不擅长写报告昂,很多地方能省全省了. 助力来年编译原理加大难度!(hhh) M ...
- Gin 实现基础 CRUD 接口
前面2篇讲了关于 gin + mysql + jwt + rbac 等基础 web搭建操作, 主要目的还是学习 go 语言的一些应用工具, 然后本篇继续来实现一个名为 notice 的公告模块, 包含 ...
- MFC对话框显示时背景闪烁
在显示一个对话框时,可以在WM_PAINT消息处理函数中绘制窗口的背景色.但会出现一种情况,在还未执行完OnPaint函数,对话框已经先显示出白色窗体,如下: 还未绘制窗体,背景色先被显示. 解决办法 ...
- .NET中使用CommonOpenFileDialog【打开文件夹】
install-package WindowsAPICodePack var folderDialog = new CommonOpenFileDialog() { Title = "xxx ...
- 【中文】【吴恩达课后编程作业】Course 1 - 神经网络和深度学习 - 第二周作业
[吴恩达课后编程作业]Course 1 - 神经网络和深度学习 - 第二周作业 - 具有神经网络思维的Logistic回归 上一篇:[课程1 - 第二周测验]※※※※※ [回到目录]※※※※※下一篇: ...
- FFmpeg开发笔记(六十三)FFmpeg使用vvenc把视频转为H.266编码
前面的两篇文章分别介绍了如何在Linux环境和Windows环境给FFmpeg集成H.266的编码器vvenc,接下来利用ffmpeg把视频文件转换为VVC格式,观察新生成的vvc视频能否正常播放. ...
- JDBC连接数据库增删改查实例
查询所有 dao层代码: package example; import java.sql.Connection; import java.sql.DriverManager; import java ...
- Jenkins概述及Linux系统中安装
概述 官网:https://www.jenkins.io/ GitHub地址:https://github.com/jenkinsci/jenkins Jenkins是一个用Java编写的开源的持续集 ...
- map-HashMap
HashMap 图片~~~ 其他常见的map结构 常见的map结构 常用的Map结构有:hashMap(最常用).hashTable.LinkedHashMap.TreeMap(对存入的键值进行排序) ...