# leetcode 第五题 找到最长回文串

Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.

（1）假定当前字符为回文串首字母，并将回文串正序列指针beginC指向当前字符，另回文串最后一个字符的指针endC指向最后一个字符

（2）判断endC和beginC

（3）若当前endC == beginC,则beginC++，endC--;

（4）若endC!=beginC,则beginC重新指向当前假定的回文串首字母，endC--;

class Solution {
public:
string longestPalindrome(string s) {
string temp;
if(s.length() <= 2)
return s;
int begin;
int end;
int max = 0;
for(int i = 0; i < s.length(); ++i)
{
begin = i;
end =  s.length() - 1;
int itbegin = i;
for(int j = s.length() - 1; j >= i; --j)
{
if(s[itbegin] != s[j])
{
end = j - 1;
itbegin = i;
}
else
{
itbegin++;
}
}
if(max <= end - begin)
{
string temp1;

max = end - begin;
for(int i = begin; i <= end; ++i)
{
string temp2;
temp2 = s[i];
temp1.append(temp2);
//cout << " " << s[i];
}
temp = temp1;
//cout << endl;
}
}

for(int i = s.length() - 1; i >= 0; --i)
{
end = i;
begin =  0;
int itbegin = i;
for(int j = 0; j <= i; ++j)
{
if(s[itbegin] != s[j])
{
begin = j + 1;
itbegin = i;
}
else
{
itbegin--;
}
}
if(max <= end - begin)
{
string temp1;

max = end - begin;
for(int i = begin; i <= end; ++i)
{
string temp2;
temp2 = s[i];
temp1.append(temp2);
//cout << " " << s[i];
}
temp = temp1;
//cout << endl;
}
}
return  temp;
}
};

class Solution {
public:
string longestPalindrome(string s) {
if(2 >= s.length())
return s;
bool found = false;
int maxLength = s.size();
string temp;
while(!found)
{
for(int i = 0; i <= s.size() - maxLength; ++i)
{
int begin = i;
int end = i+ maxLength -1;
for(; end >= begin; )
{
if(s[begin] != s[end])

break;
}
else

if (begin - end <= 0 && begin - end >= -1)
{
found = true;
temp = s.substr(i, i+maxLength);
break;
}
else
{
++begin;
--end;
}
}
}
if(found == true)
{
break;
}
}
--maxLength;
}
return temp;
}
}

• 本文已收录于以下专栏：

## Leetcode #5 Longest Palindromic Substring 最长回文串 解题小节

1 题目理解Longest Palindromic Substring 这道题是ACM一众的在线编程OJ系统里面的常客，最长回文串。很多题目都和这道题十分的类似，因此也具有很强的参考性和经典型。什么...
• MebiuW
• 2016年03月08日 16:51
• 711

## leetcode 5. Longest Palindromic Substring 最长回文串

Longest Palindromic Substring Given a string S, find the longest palindromic substring in S. You may...

## Leetcode 409. Longest Palindrome 构造最长回文串 解题报告

1 解题思想这道题并不是求字符串里最长的回文串，而是说用这些字符可以构成多长的回文串。所谓的回文串，就是要左右对称，所以除了中心的那个位置的字符可以出现奇数次以外，都要出现偶数次。如此，方式就很简单了...
• MebiuW
• 2016年10月02日 16:40
• 2591

## leetcode第五题—最长回文字符串

• kesonyk
• 2015年07月23日 17:52
• 738

## [LeetCode]409. Longest Palindrome(最长回文)

409. Longest PalindromeGiven a string which consists of lowercase or uppercase letters, find the len...

## Leetcode|Longest Palindromic Substring(最长回文的几种方法)（Manacher算法）

Given a string S, find the longest palindromic substring in S. You may assume that the maximum l...

## hdu5371 Hotaru's problem 2015年多校第七场C题 最长回文串

举报原因： 您举报文章：leetcode 第五题 找到最长回文串 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)