题解 | #密码截取#

密码截取

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专栏练习梳理

全部评论

相关推荐

头像
04-29 10:53
已编辑
东北大学 自动化类
点赞 评论 收藏
转发
点赞 1 评论
分享
牛客网
牛客企业服务