zoukankan      html  css  js  c++  java
  • CareerCup Facebook Total number of substring palindrome

    Write a function for retrieving the total number of substring palindromes. 
    For example the input is 'abba' then the possible palindromes= a, b, b, a, bb, abba 
    So the result is 6. 

    Updated at 11/11/2013: 

    After the interview I got know that the O(n^3) solution is not enough to go to the next round. It would have been better to know before starting implementing the solution unnecessarily ...


    ------------------------------------------------------------------------


    Similar to leetcode Longest Palindromic Substring Part II in my blog, the code is like:

    #include <iostream>
    #include <map>
    #include <algorithm>
    #include <limits.h>
    #include <assert.h>
    #include <string.h>
    #include <vector>
    using namespace std;
    string preprocess(string s) {
      string res = "^#";
      for (int i = 0; i < s.length(); ++i) {
        res += s[i];
        res += '#';
      }
      res += '$';
      return res;
    }
    int getPalindromeNum(string s) {
      string str = preprocess(s);
      int i, j, len = str.length(), C = 0, R = 0, res = 0, ii;
    
      vector<int> T(len + 1, 0), P(len + 1, 0);
    
      for (i = 1; i < len; ++i) {
        ii = 2*C - i;
        P[i] = (R - i) > 0 ?

    min(P[ii], R-i) : 0; //bug1: P[i] = (R - i) > 0 ? P[i] : 0 while (str[i + P[i] + 1] == str[i - P[i] - 1]) ++P[i]; res += (P[i] + 1) / 2; //bug2: res += P[i]; if (i + P[i] > R) { C = i; R = i + P[i]; } } return res; } int main() { //string s = "abcba"; string s = "aaaaa"; int res = getPalindromeNum(s); return 0; }



  • 相关阅读:
    线段树优化建图 && CF-786B.Legacy(优化建图,dijkstra)
    构建高性能JavaScript应用
    关于互联网应用前端架构的一些思考
    Router模块
    View模块
    Backbone源码解析系列
    Model模块
    Events模块
    Backbone源码风格
    jQuery选择器总结
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7357530.html
Copyright © 2011-2022 走看看