name
- 王胤皓
AC 记录
Problem
Ideas
用一个字符串进行输入,第二个字符串赋值为第一个字符串,然后把第二个字符串进行翻转,第一个字符串称为
s
s
s,第二个字符串称为
s
2
s2
s2。
再用另外一个存储字典序最小的字符串,称为
a
a
a。
然后遍历字符串的长度,从
1
1
1 到字符串长度。
把
s
s
s 的前
i
i
i 位加上
s
2
s2
s2 的最后
i
i
i 位,如果小于了
a
a
a,那么把
a
a
a赋值为
s
s
s 的前
i
i
i 位加上
s
2
s2
s2 的最后
i
i
i 位,否则直接跳出循环,最后输出
a
a
a 即可。
C++ Accepetd code
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
int n;
string s,s2;
cin>>n>>s;
s2=s;
reverse(s2.begin(),s2.end());
string a;
for(int i=1; i<=s.size(); i++){
string str1=s.substr(0,i);
string str=s2.substr(s.size()-i);
if(i==1) a=str1+str;
else if(a>(str1+str)) a=str1+str;
else break;
}
cout<<a<<endl;
}
return 0;
}