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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP