题目:UVa1584
地址:https://vjudge.net/problem/UVA-1584
题解:
给你一个字符串,它构成一个环,可以以任意位置作为起点构成一个新的字符串,问你其中字典序最小的字符串是多少。
思路:
直接遍历每个位置,以此作为起点构造字符串,求出当中最小的并输出。
编程技巧:
① min函数默认可以按照字典序比较两个字符串
AC代码:
#include<iostream>
#include<cstdio>
#include<vector>
#include<string>
#include<cstring>
#include<algorithm>
#include<cstdlib>
using namespace std;
int T;
string s;
int main(){
cin >> T;
while(T--){
cin >> s;
int len = s.length();
string minn = s; ///记录字典序最小的字符串
for(int i = 0;i < len;++i){ ///以不同位置作为起点,遍历各个字符串
string temp = s; ///当前位置的字符串
int x = i;
int index = 0;
while(index<len){ ///构造当前位置的字符串
temp[index++] = s[x%len];
x++;
}
minn = min(minn,temp); ///取最小的字符串
}
cout << minn << endl;
}
return 0;
}