python最长回文字符
解题思想:
- 一,把左右两边相等的全部回文字符找出来,通过双循环来遍历比较
- 二,找到最长的那个回文字符,然后求其长度
一,简单版本:双循环来暴力比较左右两边字符是否相等,把全部相等的给拿出来,找出最长的字符串
str = input() n = len(str) list = [] for i in range(0,n-1): for j in range(1,n): if str[i:j] == str[j:i:-1]:
#注意,下标区间取值,是左闭右开型,所以要想取值到j,需要str[i:j+1] list.append(len(str[i:j+1])) print(max(list))
二,优化版本,降低比较此次数
str = input() n = len(str) list = [] for i in range(0,n-1): for j in range(1,n): if str[j] == str[i] and str[i+1:j] == str[j-1:i:-1]: list.append(len(str[i:j+1])) print(max(list))
三,再降低一下比较次数:
str = input() n = len(str) list = [] for i in range(0, n - 1): for j in range(1, n): if i <= j: if str[j] == str[i] and str[i + 1:j] == str[j - 1:i:-1]: list.append(len(str[i:j + 1])) print(max(list))
全世界的程序员们联合起来吧!