-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path5.cpp
43 lines (39 loc) · 957 Bytes
/
5.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include<iostream>
#include<vector>
#include<map>
using namespace std;
string longestPalindrome(string s) {
if(s.empty())
return s;
int st = 0, len = 0;
for(int i = 0; i < s.size(); ++i) {
int j = 1;
for(; i - j >= 0 && i + j < s.size(); ++j)
if(s[i-j] != s[i+j])
break;
if(j - 1 > len) {
len = j - 1;
st = i;
}
}
int st2 = 0, len2 = 0;
for(int i = 0; i < s.size() - 1; ++i) {
int j = 0;
for(; i - j >= 0 && i + j + 1 < s.size(); ++j)
if(s[i-j] != s[i+j+1])
break;
if( j > len2) {
len2 = j;
st2 = i;
}
}
if(len * 2 + 1 > len2 * 2)
return s.substr(st-len, len * 2 + 1);
else
return s.substr(st2 - len2 + 1, len2 * 2);
}
int main(){
string s("asdfasdfabcabccba");
cout<<longestPalindrome(s);
return 1;
}