查找给定字符串的所有回文子字符串-Python 2

假设我们有一个字符串;我们必须从该字符串中找到所有回文子字符串。在这里,aa和aa被视为两个子字符串,而不是一个。

因此,如果输入就像重新分配器,那么输出将是['r','e','d','i','v','ivi','divid','edivide','redivider' ,“ i”,“ d”,“ e”,“ r”]

为了解决这个问题,我们将遵循以下步骤-

  • v:=一个新列表

  • 位置:= 0.0

  • 而pos <s的大小,则

    • 在v的末尾插入s [从(pos-rad)的索引整数到(pos + rad +1)的整数]

    • rad:= rad +1

    • rad:= pos-(pos为整数)

    • 而(pos + rad)<s的大小且(pos-rad)> = 0,并且(s [(pos-rad)的整数与s [(pos + rad)的整数]相同)

    • pos:= pos + 0.5

    • 返回v

    范例程式码

    让我们看下面的实现以更好地理解-

    def get_all_pal_sub(s):
       v = []
       pos = 0.0
       while pos < len(s):
          rad = pos - int(pos)
          while ((pos + rad) < len(s) and (pos - rad) >= 0 and (s[int(pos - rad)] == s[int(pos + rad)])):
             v.append(s[int(pos - rad): int(pos + rad + 1)])
             rad += 1
          pos += 0.5
       return v
    v = get_all_pal_sub("redivider")
    print(len(v))
    print(v)

    输入项

    "redivider"

    输出结果

    13 ['r', 'e', 'd', 'i', 'v', 'ivi', 'divid', 'edivide', 'redivider', 'i', 'd', 'e', 'r']
    猜你喜欢