Bootstrap

找出回文字符串

又是一早上,总算理清了思路,这个题确实有点绕,不过有了经验以后就怎么做了。

上代码

# 找出最先出现的最长回文串 (“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串)

class Solution:

def __init__(self) -> None:

pass

def solution(self, str_):

result = None

a = [] # 设置一个空列表,用来装所有的回文字符片段

if len(str_) <= 1: # 如果输入的空字符串或是就一个字符,那结果就是它自己

return result

else:

for j in range(1+len(str_)): # 设置开始的第一个字符开始循环查找

for i in range(j, 1+len(str_)): # 遍历整个字符串

if str_[j:i+1] == str_[j:i+1][::-1]: # 判断字符串是否是回文字,要注意的是切片和反向索引要区分开

a.append(str_[j:i+1]) # 把回文字符串添加进列表里

# print(a)

num = 0 # 设置一个数,用来计算回文字符串的长度

for i in range(len(a)): # 遍历列表

if len(a[i]) > num: # 判断字符串长度,如果比前面的长就替换掉

num = len(a[i])

result = a[i]

# print(result)

return result

if __name__ == "__main__":

str_ = input().strip() # 输入的是一个字符串,去掉了两端的空格

# print(str_)

sol = Solution()

result = sol.solution(str_)

print(result)

这个程序确实有几处需要注意的地方,在代码里已经标注。

这个程序还可以改成找最后一个最长回文字符串,而且还可以判断有没有回文字符串

;