zoukankan      html  css  js  c++  java
  • Leetcode 5. 最长回文子串

    给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。

    示例 1:

    输入: "babad"
    输出: "bab"
    注意: "aba"也是一个有效答案。
    

    示例 2:

    输入: "cbbd"
    输出: "bb"
    
    思路:马拉车裸题了,搓一个马拉车出来就好了
    马拉车原理请转链接:https://blog.csdn.net/dyx404514/article/details/42061017
     1 class Solution {
     2 public:
     3     string longestPalindrome(string s) {
     4     // Insert '#'
     5     string t = "$#";
     6     for (int i = 0; i < s.size(); ++i) {
     7         t += s[i];
     8         t += "#";
     9     }
    10     // Process t
    11     vector<int> p(t.size(), 0);
    12     int mx = 0, id = 0, resLen = 0, resCenter = 0;
    13     for (int i = 1; i < t.size(); ++i) {
    14         p[i] = mx > i ? min(p[2 * id - i], mx - i) : 1;
    15         while (t[i + p[i]] == t[i - p[i]]) ++p[i];
    16         if (mx < i + p[i]) {
    17             mx = i + p[i];
    18             id = i;
    19         }
    20         if (resLen < p[i]) {
    21             resLen = p[i];
    22             resCenter = i;
    23         }
    24     }
    25     return s.substr((resCenter - resLen) / 2, resLen - 1);
    26 }
    27     
    28 };
    View Code
  • 相关阅读:
    python sys 模块
    python os 模块
    JS Dictionary
    JS Array
    JS String
    JS面向对象
    WPF中INotifyPropertyChanged用法与数据绑定
    JS的函数
    JS类型转换
    JS变量的作用域
  • 原文地址:https://www.cnblogs.com/tijie/p/9917210.html
Copyright © 2011-2022 走看看