本帖最后由 全能小乌贼 于 2020-8-5 22:28 编辑
这个是不一样的, 对于这个最长回文字符串算法问题我不做深入解释,还请自行百度。
但是这个切片的问题是你的语法表达不恰当, b = s[i:i + j:-1]这个语句的意思是说,以第i个元素起始,第i+j个元素结束,但是最后一个-1表示角标值每次-1,比如从3开始,到5结束,然后角标每次-1,从3开始-1,是永远也不能够到达5的,所以不会有值输出出来,因此第三个参数你可以理解为步长。但是 a[::-1]表示的也是每次步长值-1,但是因为它使用的是::,这个符号表示取所有值,因此会自动默认为从最大的值开始每次-1到第一个值结束,比如从5开始到3结束,它会自动选择合适的起始和结束的值。因为第一个你指定了起始和结束的值但是因为步长给的有问题所以不能够输出。从而导致进一步if a==b语句失效,所以什么都输出不出来。逻辑上可能有些难理解,你可以试试下面的代码帮助你理解一下。
- s = "abcdef"
- b = s[0: 6: -1] #第三个参数表示的是间隔取法
- c = s[0: 6: 2]
- a = s[::-1]
- print(b) # 这个不会有输出
- print(a) # 这个才有输出
- print(c) # 从第一个元素开始,隔一个元素输出
复制代码
如果不懂可以继续提问,如果解答了你的问题,还请给个好评,谢谢!