[题解] 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.本篇文章我们把 ...
随机推荐
- [HTB] 靶机学习(一)Heal
[HTB] 靶机学习(一)Heal 概要 学习hackthebox的第一天,本人为初学者,将以初学者的角度对靶机渗透进行学习,中途可能会插入一些跟实操关系不大的相关新概念的学习和解释,尽量做到详细,不 ...
- Array, Set, Map知多少?
Array,Set和Map三个作为Javascript中可迭代的集合数据类型,在编程过程中使用的频率也比较高.针对三种数据类型各自的一些特性,本文的内容将从以下几个方面来上述数据类型做一个总结. 实例 ...
- L1-1、Prompt 是什么?为什么它能“控制 AI”?
*--Prompt 入门 L1-1 想象一下,你只需输入一句话,AI 就能自动为你写一篇文案.生成一份报告.甚至规划你的创业计划.这种"对话即编程"的背后魔法,就是 Prompt ...
- Innosetup 安装 VC_redist 运行时库
#普通安装vc_redis.x86.exe(会提示用户做出选择),在innosetup的[Run]属性中添加下面这一行 Filename: "{app}VC_redist.x86.exe&q ...
- Go交叉编译
#在Mac上编译linux平台应用 GOOS=linux GOARCH=amd64 go build hello.go #在Windows上编译linux平台应用(关闭CGO) CGO_ENABLED ...
- CSP2020复赛前小结
今天用windows下的GUIDE打了一些板子,以下是我遇到的问题. 语言 未定义返回值类型的函数 inline isnum(char ch) { return ch>='0'&& ...
- const关键字和指针
const指针 const关键字 1.const int p const int p 与 int const p 是等价的. 用const修饰变量 p 时,则 p 成为只读变量,必须在定义的同时初始化 ...
- Astah Community安装教程及使用说明(包括括菜单命令解释、操作向导说明、快捷命令说明)
一.安装教程: 1.双击下载好的文件,允许安装(现在官网已经停刊免费的社区版了,如果想要下载社区版需要从其他地方寻找资源) 2.选择安装的语言,English,点击OK 3.next,接受协议,nex ...
- FastAPI访问令牌的权限声明与作用域管理:你的API安全真的无懈可击吗?
title: FastAPI访问令牌的权限声明与作用域管理:你的API安全真的无懈可击吗? date: 2025/06/15 06:32:07 updated: 2025/06/15 06:32:07 ...
- 大模型VS小模型:论国产数据库运维AI Agent的正确打开方式
作者:孙鹏,大衍(北京)科技有限公司研发工程师 首先为大家推荐这个 OceanBase 开源负责人老纪的公众号 "老纪的技术唠嗑局",会持续更新和 #数据库.#AI.#技术架构 相 ...