Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较python中的字符串索引_Python - Fatal编程技术网

比较python中的字符串索引

比较python中的字符串索引,python,Python,假设我有一个随机字符串s='abcdlfkdf',我想获取按字母顺序排列的最大子字符串,这个问题在这里已经解决了。但我想学习如何找到解决方案,以及如何将我的思想融入到比较中。请注意,这只是后一段代码的一小部分,我只是无法理解这个小的初始部分 我对这个问题的第一次破解是: s = 'abcdlfkdf' sub= '' for i in s: if s[0] < s[i+1]: #Can't compare integers with strings 很明显,你不能比

假设我有一个随机字符串s='abcdlfkdf',我想获取按字母顺序排列的最大子字符串,这个问题在这里已经解决了。但我想学习如何找到解决方案,以及如何将我的思想融入到比较中。请注意,这只是后一段代码的一小部分,我只是无法理解这个小的初始部分

我对这个问题的第一次破解是:

s = 'abcdlfkdf'
sub= ''
for i in s:
    if s[0] < s[i+1]:
       #Can't compare integers with strings
很明显,你不能比较整数和字符串,所以你不能用索引来比较单个字符串。替代方案是什么

如果有人能给我指出基本的方向,我真的会想解决这个问题,而不去寻找任何接近解决方案的东西。我的心需要忍受这一切

谢谢

变化

for i in s:
致:


我想说的是,我能给你的最好提示是查看Unicode或ASCII中字符的值:

您可以使用两个不同的函数。 参考:

函数ord将获得字符的int值。万一你 想转换回玩后的数字,函数chr 这就是诀窍

Unichar是您可以使用的另一个功能。这暗示够了吗

我的尝试:

    s = 'abcdlfkdf'
    print("Our original string is " + str(s))
    bestindex='0'
    bestlength=0
    for i in range(len(s)-2):
        best = 0
        m = i
        while(ord(s[m]) < ord(s[m+1]) and m<len(s)-2):
            best += 1
            m += 1
        if best > bestlength:
            bestlength = best
            bestindex=i
    print("\n and the longest alphabetical substring is '" + s[bestindex:-(len(s)-bestlength-1)] + "'!")

Saqib Ali的答案可能正是您想要的,尽管heheThanks需要提示输入,但请注意我在Saqib Ali中的下一个响应。如果您使用的是i+1,则会发生冲突,因为上一个索引+1不存在。你只是想让sub保存最长的字母字符串吗?我希望这不会给你太多。。。但是:您可以只存储所述字符串的索引及其长度。然后,您可以看到,在遍历字符串时,是否可以找到另一个子字符串,该子字符串也是按字母顺序排列的,并且长度更大。告诉我,如果我仍然摆脱你的冲突:我正在试图让潜艇持有最长的字母字符串。你做得很好:长度对我有什么帮助?你可以将迄今为止发现的最长的一个与其他的进行比较。基本上,如果你考虑一下你最初的场景:“abcdlfkdf”,你会首先找到“abcdl”。然后,当你继续前进时,你会发现“fk”。它是按字母顺序排列的,但它的长度是2而不是5。。。所以你知道“abcdl”仍然是更好的选择。这正是我所建议的想法,heheThanks!但是,当我尝试在满足条件时将s[i]附加到sub时,python会生成一个索引错误字符串Index out of Range打印出该错误之前的i值,并告诉我们它是什么。它会生成0到8的整数。非常有趣的是,当我在PythonTutor中运行相同的代码时,它会在sub满足if条件后使用sub+=s[i]命令将其添加到sub。
    s = 'abcdlfkdf'
    print("Our original string is " + str(s))
    bestindex='0'
    bestlength=0
    for i in range(len(s)-2):
        best = 0
        m = i
        while(ord(s[m]) < ord(s[m+1]) and m<len(s)-2):
            best += 1
            m += 1
        if best > bestlength:
            bestlength = best
            bestindex=i
    print("\n and the longest alphabetical substring is '" + s[bestindex:-(len(s)-bestlength-1)] + "'!")