Given a string S, find the longest palindromic substring in S. You may assume that the maximum length ofS is 1000, and there exists one unique longest palindromic substring.
问题描述:给定一个字符串,在这个字符串中寻找最长的回文子字符串
#include"stdafx.h"
#include<iostream>
using namespace std;
//求得最大回文子序列
class Solution {
private:
int max;
char str[1000];
public:
Solution()
{
max = 0;
memset(str, 0, 1000);
}
void checkPain(const char* start, const char* end)
{
int len = end - start + 1;
int index_1 = 0;
bool mark = false;
if (len % 2 != 0)
{
while (index_1 != len / 2)
{
if ((start + index_1)[0] == (end - index_1)[0])
{
index_1++;
continue;
}
else
{
mark = true;
break;
}
}
}
else
{
while (index_1 < (len / 2))
{
if ((start + index_1)[0] == (end - index_1)[0])
{
index_1++;
continue;
}
else
{
mark = true;
break;
}
}
}
if (!mark)
{
//此为回文序列
if (len > max)
{
max = len;
memcpy(str, start, len);
}
}
}
string longestPalindrome(string s) {
const char* index = s.c_str();
const char* start = index;
const char* re_end = index + s.length();
const char*end = start;
for (; start != re_end; start++)
{
end = start;
for (; end != re_end; end++)
{
checkPain(start, end);
}
}
string result = str;
return result;
}
};
int main()
{
Solution ss;
std::cout << ss.longestPalindrome("BBABCBCAB").c_str();
return 0;
}
提交了,但是leetcode提示运行超时,但是现在俺也就这样了。。。静等更新哈哈