题解 | #密码截取#
密码截取
https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1
s = input() a = [] for i in range(len(s)): for j in range(i+1, len(s)+1): if s[i] == s[j-1] and s[i:j] == s[i:j][::-1]: a.append(len(s[i:j])) print(max(a))
""" # 开始: (1)找到解决问题的高效思路 找出某一区间,字符串反转等于本身的内容,找到所有的,并将他们的长度放到列表中,求解最大值,即有效密码串的最大长度 (2)找到解决思路的代码实现方式 我的实现方式是双从重for循环,复杂度过大,不行 》 看答案 # 总结: (1)我为什么没想到这种思路 思路ok,双重for循环,使用字符串反转规则判断 (2)我为什么没想到这种代码实现方式 错误:字符串截取用的区间取值、遍历用的区间取值,我把两个搞成一样的了。字符串截取、索引这两个如果混在一定要仔细。 当复杂度高的时候,我没思路了,这个时候如何降低复杂度? 复杂度高的原因是双重for循环吗?不只是这个,还有if的条件判断,因为要截取大量的字符串,所以我们思路是给前面增加 and 条件判断。 规则是:符合要求的字符串,第一个字符跟最后一个字符必然相等。不相等的就不用截取字符串判断了,节省了大量的时间。 """
#数据仓库与数据分析实习#
OD专栏练习梳理 文章被收录于专栏
OD专栏练习梳理