336(see). Palindrome Pairs 5.(see)

336题:两种方法:1笨方法,注意在判断a+b组成的串是否为回旋的时候,不要将两者相加,直接判断就不会超时.2.将输入的vector& words反向后用map存储,然后针对每个words[i]将其分为两部分lef+rig分别进行查找。

5. Longest Palindromic Substring

两种解法:

//bool Make(string &s,int be,int end)
//{
// for (int i=be,j=end;i<=j;i++,j--)
// {
// if (s[i]!=s[j])
// {
// return false;
// }
// }
// return true;
//}
//int Pal(string &s,int be,int end)
//{
// for (int i=be;i // {
// if (Make(s,i,end))
// {
// return end-i+1;
// }
// }
// return 1;
//}
//
//string longestPalindrome(string s) {
// vectorss;
// for (int i=0;i // {
// ss.push_back(1);
// }
// for (int i=1;i // {
// int tmp = ss[i-1];
// if (i - tmp - 1 >= 0)
// {
// if (s[i-tmp-1]==s[i])
// {
// ss[i] = tmp+2;
// continue;
// }
//
// ss[i]= Pal(s,i-ss[i-1],i);  
// }
// int max=0;
// int mark=0;
// for (int i=0;i // {
// if (ss[i]>max)
// {
// max=ss[i];
// mark=i;
// }
// }
// string re = s.substr(mark-max+1,max);
// return re;
//}
string longestPalindrome(string s) { 
int  max=0,be=0;
for (int i=0;i{
int a=i-1,b=i+1;
int ss=1;
while (b{
b++;ss++;
}
i=b;
while (a>=0&&b{
a--;b++;ss++;ss++;
}
if (ss>max)
{
max=ss;
be=a+1;
}
}
return s.substr(be,max);
}

你可能感兴趣的:(leetcode)