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