我正在尝试解决返回字符串中最长回文子串的问题 它在小字符串上工作正常,但在长字符串上它会给出“时间限制超过”错误。 我如何优化它以及我到底做错了什么? 我是初学者所以请帮助...
string pal(string s){
string longest;
if (s.length() == 0) {
return "";
}
if (s.length() == 1) {
return s;
}
if (s.length() == 2) {
if (s == reverse(s)) {
return s;
}
else {
longest += s[0];
return longest;
}
}
else {
int start;
int max;
max = 0;
for (int i = 0; i < s.length(); i++) {
string temp = "";
for (int j = i; j < s.length(); j++) {
temp += s[j];
if (temp == reverse(temp) && temp.length() > 1) {
if (temp.length() > max) {
start = i;
max = temp.length();
}
}
}
}
for (int i = start; i < start + max; i++) {
longest += s[i];
}
if (max == 0) {
return longest += s[0];
}
}
return longest;
}