算法
(暴力枚举) $O(N^2)$
本题其实就是枚举分割点,把前一段的子串和后一段的子串互换位置,最终得到字典序最小以及最大字符串。
C++ 代码
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)
using std::cin;
using std::cout;
using std::string;
int main() {
string s;
cin >> s;
int n = s.size();
string mn = s, mx = s;
rep(i, n) {
mn = min(mn, s);
mx = max(mx, s);
// shift
rotate(s.begin(), s.begin() + 1, s.end());
}
cout << mn << '\n' << mx << '\n';
return 0;
}