字符串水题(substr的使用+简单优化)
来源:互联网 发布:软件外包供应商管理 编辑:程序博客网 时间:2024/06/16 18:21
问题 H: 字符串最小表示
时间限制: 1 Sec 内存限制: 32 MB提交: 7 解决: 5
[提交][状态][讨论版]
题目描述
把一个长为len的字符串围成一个圈,然后以任意一个字符作为起点,都会产生一个长为len的字符串,字符串的最小表示就是所有字符串中字典序最小的那个。
例如字符串alabala,将它围成一个圈后,根据上面的规则会形成以下新的字符串:
labalaa
abalaal
balaala
alaalab
laalaba
aalabal
在这所有7个字符串中,字典序最小的是aalabal,它的第一个字母在原字符串中的位置是6。(位置从0开始算)
现在给定你一个字符串,请你找出其最小表示的第一个字母在原字符串中的位置。如果字符串最小表示有多个,那么输出第一个字母在原字符串中位置最小的。
例如字符串alabala,将它围成一个圈后,根据上面的规则会形成以下新的字符串:
labalaa
abalaal
balaala
alaalab
laalaba
aalabal
在这所有7个字符串中,字典序最小的是aalabal,它的第一个字母在原字符串中的位置是6。(位置从0开始算)
现在给定你一个字符串,请你找出其最小表示的第一个字母在原字符串中的位置。如果字符串最小表示有多个,那么输出第一个字母在原字符串中位置最小的。
输入
输入的第一行是一个整数t,表示有t组测试数据。
接下来t行,每行先输入一个整数l(5<=l<=100000),表示原字符串的长度,然后输入一个字符串,表示原字符串。字符串中只包含小写字母。
接下来t行,每行先输入一个整数l(5<=l<=100000),表示原字符串的长度,然后输入一个字符串,表示原字符串。字符串中只包含小写字母。
输出
对于每组输入,输出原字符串最小表示的第一个字母在原字符串中的位置。
样例输入
26 baabaa7 alabala
样例输出
16
提示
分析:直接模拟的话会时间超限,所以先选出字符串中字典序最小的那个字符,然后不是这个字符开头的就直接跳过,优化一下就好了
#include <bits/stdc++.h> using namespace std; int main(){ int t; cin>>t; int n; string a; int record; while(t--) { string c="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"; cin>>n>>a; char MIN='z'; int l=a.length(); for(int i=0; i<l; i++) { MIN=min(MIN,a[i]); } for(int i=0; i<l; i++) { if(a[i]==MIN) { string b=a.substr(i,n)+a.substr(0,i); if(c>b) { c=b; record=i; } } } cout<<record<<endl; } return 0;}
0 0
- 字符串水题(substr的使用+简单优化)
- 字符串分隔(使用substr实现)
- substr()函数的使用
- Oracle的substr函数简单用法 substr(字符串,截取开始位置,截取长度
- substr字符串的截取
- 字符串替换(string.find() 和 string.substr() 的使用)----去哪儿2016研发工程师编程题
- oracle substr、instr以及case when 的连用截取字符串以及替换(repace)的使用
- C++中string substr()函数的使用(截取子字符串的函数)
- substr函数的使用
- oracle substr的使用
- 字符串的slice(),substr(),substring()
- substr()函数截取字符串
- substr和instr的使用
- oracle截取字符串的函数substr
- Oracle截取字符串的函数substr
- Oracle截取字符串的函数substr
- java-截取字符串的substring和substr
- ThinkPHP 模板substr的截取字符串函数
- awk边学边记
- Searches on Mobile Solution for OCR/ID Reader/MRZ Reader
- linux进程线程下简单的消费者和生产者
- 单词的理解 —— 词义的变化(翻译)
- 图解http学习笔记2.简单http协议
- 字符串水题(substr的使用+简单优化)
- mysql中对order by的函数substring_index() , find_in_set()使用
- 版本中Alpha、Beta以及RC等代表的含义
- 单例模式应用场景
- 【秒懂设计模式】单例设计模式
- 机器学习(三):概率学习——朴素贝叶斯分类
- python:BeautifulSoup 模块使用指南
- 百度2017春季招聘笔试题
- C语言测试大小端模式