题目很简单,就是寻找最长的回文子串 但是要按字典序排序(范围 <=5000)
我想知道有什么方法可以让字符串按字典序排序?
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string ex(string s, int i, int j) {
int l, r;
if (i == j) {
l = i - 1, r = i + 1;
} else {
l = i - 1, r = j + 1;
}
while (l >= 0 && r < s.size()) {
if (s[l] != s[r]) {
break;
} else {
l--;
r++;
}
}
return s.substr(l + 1, r - l - 1);
}
string huiwen(string s) {
string cnt = "";
int len = s.size();
if (len < 2) {
return s;
}
for (int i = 0; i < len; i++) {
string ti = ex(s, i, i);
if (ti.size() > cnt.size()) {
cnt = ti;
}
}
for (int i = 0; i < len - 1; i++) {
if (s[i] == s[i + 1]) {
string ti = ex(s, i, i + 1);
if (ti.size() > cnt.size()) {
cnt = ti;
}
}
}
return cnt;
}
int main() {
string str;
cin >> str;
string cnt = huiwen(str);
cout << cnt << endl;
return 0;
}