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; }



  • 相关阅读:
    c++,不能声明为虚函数的函数
    Abstract
    多态性vptrvtable
    C++的重写,重载,重定义
    final
    scanf()和getchar() 使用
    深入理解C++中的mutable关键字
    equal和==
    MoQ(基于.net3.5,c#3.0的mock框架)简单介绍
    VS2008快捷键
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7357530.html
Copyright © 2011-2022 走看看