有人可以向我解释为什么我会得到空字符串吗?

时间:2017-01-14 21:06:11

标签: python-3.x

我想要做的是获取s中最长的子字符串,其中字母按字母顺序出现。

出于某种原因,alphasub最后没有字符串,我不知道为什么

start = 0
sub = 1
maxsub = 0
current = 0
s = 'azcbobobegghakl'
leng = len(s)
for i in range(leng):
    if i != leng - 1:
        if s[i] <= s[i+1]:
            current = i
            sub = 1
            while current < (leng-1):
                if s[current] <=s [current+1]:
                    sub += 1
                    current += 1
                else:
                    break
                if(sub>maxsub):
                    maxsub = sub
                    start = i

alphasub = s[start:maxsub]

print("longest substring is: " + alphasub)            

2 个答案:

答案 0 :(得分:0)

使用print检查代码是一种很好的做法。 我在你的代码末尾添加了一些打印件,如下所示:

print(s)
print(start)
print(maxsub)
alphasub=s[start:maxsub]

print ("longest substring is: " + alphasub)    

哪个输出:

azcbobobegghakl
7
5
longest substring is: 

从7开始,到5结束,显然不起作用。

答案 1 :(得分:0)

字符串切片采用起始位置和结束位置。 https://docs.python.org/2/tutorial/introduction.html

将alphasub = s [start:maxsub]更改为alphasub = s [start:start + maxsub]。你应该看到预期的输出。