Python中查詢透過移除或改組字元生成的字串的最長迴文子串
假設我們有一個字串;我們必須找到可以透過刪除或改組字串中的字元生成的**最長**迴文。如果存在多個迴文,則只返回一個。
因此,如果輸入類似於pqqprrs,則輸出將是pqrsrqp。
為了解決這個問題,我們將遵循以下步驟:
count := 大小為256的陣列,填充為0
對於 i 從0到字串大小,執行:
count[string[i]的ASCII碼] := count[string[i]的ASCII碼] + 1
begin := 空字串,mid := 空字串,end := 空字串
character := 'a'的ASCII碼
當character <= 'z'的ASCII碼時,執行:
如果 count[character] AND 1 非零,則
mid := character
count[character] := count[character] - 1
character := character - 1
否則,
對於 i 從0到 count[character]/2(整數除法),執行:
begin := begin + character (來自character)
character := character + 1
end := begin
end := 反轉end
返回 begin + mid + end
示例
讓我們來看下面的實現,以便更好地理解:
def get_palindrome(string): count = [0]*256 for i in range(len(string)): count[ord(string[i])] += 1 begin = "" mid = "" end = "" character = ord('a') while character <= ord('z'): if (count[character] & 1): mid = character count[character] -= 1 character -= 1 else: for i in range(count[character]//2): begin += chr(character) character += 1 end = begin end = end[::-1] return begin + chr(mid) + end string = "pqqprrs" print(get_palindrome(string))
輸入
"pqqprrs"
輸出
pqrsrqp
廣告