您的位置:首页 > 理论基础

LeetCode-5*(回文)

2017-04-03 10:02 295 查看
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.

Example:

Input: "babad"

Output: "bab"
Note: "aba" is also a valid answer.

Example:

Input: "cbbd"
Output: "bb"

class Solution {
public:
string longestPalindrome(string s) {
if(s.empty())  return "";  //空串
if(s.size() == 1)  return s;  //单字符串
int start = 0, len = 1;  //回文子串开始,长度
for(int i = 0;i<s.size();){
if(s.size()-i <= len/2)  break;
int j = i, k = i;
while(k<s.size()-1 && s[k] == s[k+1])  k++;  //掠过重复字符
i = k+1;   //i存储回文子串对称轴心,如有重复字符的话,指向重复字符的后一个
while(k<s.size()-1 && j>0 && s[k+1]==s[j-1])  { k++;  j--; }
int newlen=k-j+1;
if(newlen>len){
len = newlen;
start = j;
}
}
return s.substr(start,len);
}
};


Subscribe to see which companies asked this question.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  计算机 C++ string