[leetcode] Longest Palindromic Substring 最长回文子串


先把实现贴上,后面再填坑

 1 class Solution {
 2 public:
 3     string longestPalindrome(string s) {
 4         size_t len = s.size();
 5         string ins_s = string(2*len+1, '#');
 6         vector<int> len_vec(2*len +1, 0);
 7         for (int i =0;i<len;i++) {
 8             ins_s[1+2*i] = s[i];
 9         }
10         int max_dis = 0, max_dis_pos = 0;
11         int cur_dis = 0, cur_len = 0;
12         int max_len = 0,max_len_pos=0;
13         string result;
14         for (int i=0;i<2*len+1;i++) {
15             if (max_dis > i) {
16                 cur_dis = i+len_vec[max_dis_pos-(i-max_dis_pos)];
17                 if (cur_dis<max_dis) {
18                     len_vec[i] = len_vec[max_dis-(i-max_dis)];
19                     continue;
20                 }
21             }
22             int start_len = max(0,max_dis-i)+1;
23             while (i-start_len >=0 && i+start_len < 2*len + 1 && ins_s[i-start_len]==ins_s[i+start_len]) {
24                 max_dis = i+start_len;
25                 max_dis_pos = i;
26                 start_len++;
27             }
28             len_vec[i] = start_len-1;
29             if (len_vec[i] > max_len) {
30                 max_len = len_vec[i];
31                 max_len_pos = i;
32             }
33         }
34         for (int i=max_len_pos-max_len;i<=max_len_pos+max_len;i++) {
35             if(ins_s[i] == '#') continue;
36             result += ins_s[i];
37         }
38         return result;
39     }
40 };

优质内容筛选与推荐>>
1、nginx http proxy 正向代理
2、OpenRail中地形模型特征的含义
3、从今天开始,逐步的把EverNote摘抄的笔记发送到这里来,也算是写博客的一个开始吧
4、如何向AcmeAir注入问题代码
5、转-python闭包理解


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号