zoukankan      html  css  js  c++  java
  • [Leetcode] Longest Palindromic Substring

    Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.

    最长回文,对于每一个字符从中间向两边找,注意分奇数与偶数两种情况。总的时间复杂度为O(n^2)。另外Manacher算法复杂度为O(n),Manacher算法好复杂的样子,智商捉急,得好好消化一下。先贴个简单的吧。

     1 class Solution {
     2 public:
     3     int getLPS(const string &s, int idx1, int idx2) {
     4         while (idx1 >= 0 && idx2 < s.length() && s[idx1] == s[idx2]) {
     5             --idx1;
     6             ++idx2;
     7         }
     8         return idx2 - idx1 - 1;
     9     }
    10     
    11     string longestPalindrome(string s) {
    12         if (s.length() < 2) return s;
    13         int lps = -1, lps1, lps2, pos;
    14         for (int i = 0; i < s.length(); ++i) {
    15             lps1 = getLPS(s, i, i);
    16             lps2 = getLPS(s, i, i + 1);
    17             if (lps1 > lps || lps2 > lps) {
    18                 pos = i;
    19                 lps = max(lps1, lps2);
    20             }
    21         }
    22         if (lps & 0x1) return s.substr(pos-(lps-1)/2, lps);
    23         else return s.substr(pos-(lps-2)/2, lps);
    24     }
    25 };
  • 相关阅读:
    uva1610 Party Games
    uva1442 Cav
    uva1609 Foul Play
    uva1608 Non-boring sequences
    uva12174 滑动窗口+预处理
    uva 1451 数形结合
    light oj 1336 sigma function
    找常用词(字符串处理)问题
    指定排序问题
    完数问题
  • 原文地址:https://www.cnblogs.com/easonliu/p/4379349.html
Copyright © 2011-2022 走看看