Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python - Tìm tất cả xâu con palindrome của một chuỗi cho trước - Tập 2


Giả sử chúng ta có một chuỗi; chúng ta phải tìm tất cả các xâu con palindrome từ chuỗi đó. Ở đây aa và aa được coi là hai xâu con, không phải một.

Ví dụ, nếu đầu vào là "redivider", thì đầu ra sẽ là ['r','e','d','i','v','ivi','divid','edivide','redivider','i','d','e','r'].

Giải pháp:

  • v = [], pos = 0.0
  • While pos < len(s): rad = pos - int(pos)
  • While (pos+rad) < len(s) và (pos-rad) >= 0 và s[int(pos-rad)] == s[int(pos+rad)]: v.append(s[int(pos-rad):int(pos+rad+1)]); rad += 1
  • pos += 0.5
  • Trả về v

Ví dụ Code

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)

Đầu vào

"redivider"

Đầu ra

13
['r', 'e', 'd', 'i', 'v', 'ivi', 'divid', 'edivide', 'redivider', 'i', 'd', 'e', 'r']