2016-05-18~21:资料

2016-05-22  本文已影响20人  袁一帆
  1. NumPy图文入门

  2. 一个机器学习博客

  3. TensorFlow创建自己的手写识别引擎

  4. 随机非参数学习算法1 & 随机非参数学习算法2


  1. 词向量介绍博客

  2. Python数据入门

  3. 亚马逊深度推荐


  1. 开放数据集

  2. 微博的算法概览

  3. rnn-chinese

刷刷题

#   abacabcaba -> ^#a#b#a#c#a#b#c#a#b#a#$
#   r:最右边回文边界,c:最长回文中心
def manacher(_s):
    s = '#'.join('^{}$'.format(_s))
    c,r,n = 0,0,len(s)
    p = n*[0]
    for i in xrange(1,n-1):
        if r<i:p[i]=0                 #超过最右边际则初始化为0
        else:p[i]=min(r-i,p[2*c-i])   #由回文的对称性,未超过最右边界的时候,可以找到当前最大回文
        while s[i+1+p[i]] == s[i-1-p[i]]:  #以当前i为中心,向左右寻找回文
            p[i]+=1
        if i+p[i]>r:     #更新最右边界和最长回文中心
            c,r = i,p[i]+i
    maxl,maxi = max((n,i) for i,n in enumerate(p)) #找到最大回文中心的长度
    return _s[(maxi-maxl)/2:(maxi+maxl)/2]

print manacher('abacabcaba')
上一篇下一篇

猜你喜欢

热点阅读