
难道是 s[3:-1:-1]等价于 s[3:4:-1]?所以结果为''?
关联的 LeetCode problem: Valid Palindrome II - LeetCode。
我的出现错误的 solution 。
class Solution: def validPalindrome(self, s: str) -> bool: l, r = 0, len(s) - 1 while l < r: if s[l] != s[r]: return s[l + 1:r + 1] == s[r:l:-1] or s[l:r] == s[r - 1:l - 1:-1] l += 1 r -= 1 return True 1 luozic 2023-06-24 20:22:15 +08:00 |
2 luozic 2023-06-24 20:23:06 +08:00 +---+---+---+---+---+---+ | P | y | t | h | o | n | +---+---+---+---+---+---+ 0 1 2 3 4 5 -6 -5 -4 -3 -2 -1 |
3 mkroen 2023-06-25 10:29:46 +08:00 s[3::-1] |
4 JasonLaw OP @luozic #2 按照正常理解的话,我会觉得 s[3:-1:-1]的结果是'e'+'c'+'c'+'e',不包含'r',因为它是 stop index 所在的 char 。 |
5 JasonLaw OP @mkroen #3 我知道这样子可以,但是这样子我的代码就会变得复杂。我需要判断 stop 是否为-1 ,如果是-1 的话,就需要使用 s[3::-1]替代 s[3:-1:-1]。 |
6 zizon 2023-06-25 11:08:09 +08:00 s[3:-1:-1] -> s[3:4:-1] -> s[4:3:1] -> s[4:3] , 4 > 3 |
7 evemoo 2023-06-25 11:20:50 +08:00 左闭右开 + 切片的顺序 = 答案 |