您的位置:首页 > 编程语言 > C语言/C++

leetcode 日经贴,Cpp code -Longest Palindromic Substring

2015-04-17 00:04 393 查看
Longest Palindromic Substring

class Solution {
public:
int longest(const string &s, int st, int ed) {
int n = s.length();
int len = 0;
while (st >= 0 && ed < n && s[st] == s[ed]) {
++len;
--st;
++ed;
}
return len;
}
string longestPalindrome(string s) {
int n = s.length();
if (n <= 1) return s;
int ans = 1, st = 0, ed = 0;
for (int i = 0; i < n - 1; ++i) {
int odd = longest(s, i - 1, i + 1);
if (ans < odd * 2 + 1) {
ans = odd * 2 + 1;
st = i - odd;
ed = i + odd;
}
int even = longest(s, i, i + 1);
if (ans < even * 2) {
ans = even * 2;
st = i - even + 1;
ed = i + even;
}
}
return s.substr(st, ed - st + 1);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: