字符串_最小表示法题目
给出一个字符串,输出其本身以及其循环位移字典序最小的字符串
点击查看代码
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
string a;
cin >> a;
int n = a.size();
a += a;
int i = 0, j = 1;
int k = 0;
while (i < n && j < n && k < n) {
if (a[i + k] == a[j + k]) {
k++;
} else {
if (a[i + k] > a[j + k]) {
i = i + k + 1;
if (i == j) {
i++;
}
k = 0;
} else {
j = j + k + 1;
if (i == j) {
j++;
}
k = 0;
}
}
}
int s = min(i, j);
for (int q = s; q < s + n; q++) {
cout << a[q];
}
cout << "\n";
}
return 0;
}
浙公网安备 33010602011771号