s = 'aba'
letter = ''
substring = ''
i = 0
while(i <= len(s)):
prev_letter = s[0]
letter = s[i]
if letter <= prev_letter:
substring += letter
prev_letter = letter
i += 1
想想数组是什么以及它是如何实现的:它只是一系列连续的内存位置。索引是与初始内存地址的偏移量,而不是项目号。这就是为什么第一个项的索引为0-与第一个项的地址没有偏移量(根据定义)。然而,例如,第5项的地址是(address of the first item) + (4 * offset size)。这就是为什么您可以在恒定时间内访问数组中的任意项。(这是一种从C/C++中的“保留”)。
s = 'aba'
letter = ''
substring = ''
i = 0
for i in range(len(s)):
prev_letter = s[0]
letter = s[i]
if letter <= prev_letter:
substring += letter
prev_letter = letter
正如其他人所指出的,
s[s.Length]
实际上不是一个有效索引;索引位于closed interval[0, length - 1]
(即,最后一个有效索引是length - 1
,第一个索引是0)。注意,对于每种语言(有些语言的第一个索引是1),这不是真的,但对于Python来说,这肯定是真的。想想数组是什么以及它是如何实现的:它只是一系列连续的内存位置。索引是与初始内存地址的偏移量,而不是项目号。这就是为什么第一个项的索引为0-与第一个项的地址没有偏移量(根据定义)。然而,例如,第5项的地址是
(address of the first item) + (4 * offset size)
。这就是为什么您可以在恒定时间内访问数组中的任意项。(这是一种从C/C++中的“保留”)。将
while(i <= len(s):
更改为while(i < len(s)):
,或更改为while(i <= len(s)-1):
在Python中,字符串是一个一维字符数组。Python编程中的索引从0开始。这意味着any字符串的最大索引将始终为len(s)-1。在您的代码中,
i
最终将等于len(s)
,这比最大值高一个元素。另外,在代码中使用
for
循环而不是while
循环可能是有益的。您的代码可以替换为:相关问题 更多 >
编程相关推荐