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

336题:两种方法:1笨方法,注意在判断a+b组成的串是否为回旋的时候,不要将两者相加,直接判断就不会超时.2.将输入的vector<string>& 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<end;i++)
// {
// if (Make(s,i,end))
// {
// return end-i+1;
// }
// }
// return 1;
//}
//
//string longestPalindrome(string s) {
// vector<int>ss;
// for (int i=0;i<s.size();i++)
// {
// ss.push_back(1);
// }
// for (int i=1;i<s.size();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<s.size();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<s.size();)
{
int a=i-1,b=i+1;
int ss=1;
while (b<s.size()&&s[b]==s[i])
{
b++;ss++;
}
i=b;
while (a>=0&&b<s.size()&&s[a]==s[b])
{
a--;b++;ss++;ss++;
}
if (ss>max)
{
max=ss;
be=a+1;
}
}
return s.substr(be,max);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值