题目传送门

题目

您将得到一个长度为 \(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. 【笔记】reko 0.10.2 反编译工具安装和使用记录|(2) 翻译 user‘s guide

    Reko user's guide Reko是一个二进制可执行文件的反编译器.它接受输入的一个或多个二进制可执行文件,然后反编译成高级语言.它可以在GUI shell中被交互地使用,作为一个命令行项目 ...

  2. 鸿蒙Next开发实战教程—电影app

    最近忙忙活活写了不少教程,但是总感觉千篇一律,没什么意思,大家如果有感兴趣的项目可以私信给幽蓝君写一写. 今天分享一个电影App.   这个项目也比较简单,主要是一些简单页面的开发和本地视频的播放以及 ...

  3. Python标准库学习之logging

    前言 在python程序中,出于调试监测或者追踪(track)的目的,一般会在关键的部位加print语句来输出监测的变量值,但对于复杂的程序来讲,这样的调试手段就远远不够了,这也是logging库存在 ...

  4. 2003 can't connect to mysql server on

    把配置文件my.ini换成如下所示: mysql和mysql数据存放路径都是加双斜线 [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mys ...

  5. 自用----降重ai率方法

    目录 自用----降重ai率方法 1.查重 2.降重 2.1 ai工具降重 2.2 ai降ai(参考他人blogs,没试过) 2.3 人工降重 处理步骤 具体内容 自用----降重ai率方法 1.查重 ...

  6. L1-8、Prompt提升提问质量的实用技巧(Tips)

    掌握提问的艺术,让你的 AI 更聪明.更贴心. 为什么你的提问得不到好答案? ChatGPT 等大模型的表现很大程度上取决于你的提问方式.提得好,AI 像专家:提不好,AI 像糊涂蛋. 常见低质量提问 ...

  7. AI工具 Cursor + MCP服务:提效与落地的完美组合

    在当今软件开发快速演进的时代,开发者们越来越依赖于人工智能辅助工具来提升效率与质量.最近我在实际项目中深度使用了 Cursor 编辑器 和 MCP(Model Context Protocol)服务, ...

  8. .NET8带来的一些新特性

    最近收到任务,项目从.NET 5升级为.NET 8. 特意去了解了一下.NET8的新特性,经过验证后,分享一些这些新特性. 管他用得到用不到,先了解了再说. 一.性能提升 1.‌原生AOT深度优化 通 ...

  9. obs学习之3——obs初始化、析构

    在app的开发过程中,obs相关函数的使用顺序如下: 1.首先,初始化obs // 创建obs if ( !obs_startup( "en-US", nullptr, nullp ...

  10. GC-QA-RAG 智能问答系统的文档切片

    本章节介绍 GC-QA-RAG 智能问答系统的文档切片原理,即如何将原始文档的知识点切片后存入向量数据库. 1. 原始思路 将整个文档作为输入,交由大语言模型自动生成问答对(QA Pairs),以支持 ...