我试图打印一个字符串中的“最小”字符,如果a字符比另一个字符更接近字母表的开头,那么它会比另一个字符小,并且它是第一个索引位置。 我应该只使用1个循环来确定字符的索引,不允许使用min、max、index、find、ord、chr或list。 例如:
leastChar("yRrcDefxBqubSlyjYelskd")
应产生:
^{pr2}$目前我有:
def leastChar(inputString):
lowerString = inputString.lower()
print(lowerString)
indexLength = (len(lowerString) - 1)
print(indexLength)
index = 0
for i in range(indexLength):
if lowerString[i] < lowerString[i+1]:
index = i
print("The least char is '{0}' and occurs at position {1}".format(inputString[index], index))
返回:
leastChar("yRrcDefxBqubSlyjYelskd")
yrrcdefxbqubslyjyelskd
21
The least char is 'l' and occurs at position 18
我尝试过多种不同的方法,但即使使用超过一个循环,我发现自己在不同的位置上总是得到错误的答案。 另外,如果这很重要,leastChar('blAh')会像预期的那样在位置2返回'A'。在
我认为,最接近正确的方法是,当我把另一个for循环放入初始for循环中,希望我可以增加该变量,以便将“I”与之进行比较,例如:
for i in range(indexLength):
for j in range(indexLength):
if lowerString[i] < lowerString[j]:
做点什么,但我没能成功。 谢谢你的帮助。在
如果我正确理解您的问题,您可以在python中使用
min
然后可以使用
^{pr2}$index
方法:它将返回字符串中char的第一个外观。代码中的问题是,迭代时检查一个字符是否小于下一个字符,如果是,则保存索引,但不检查索引处的字符是否已经更小。在
扩展@melpomene的评论,算法
技巧(或者花哨的计算机科学家称之为启发式)是在遍历字符串时跟踪最小位置和最小值。在有不同的方法:
1)不允许使用min、max、index、find、ord、chr或lists? 我会尝试使用rfind()或rindex()。:^)
2)复制字符串并使用sort()查找副本中最小的字符。然后应该使用search()返回这个字符在原始InputString中的位置。在
3)创建一个字母字符串“abcdef….”,并建立一个复杂的while if try except construct来获得结果,但每个人都会讨厌它。:^)
相关问题 更多 >
编程相关推荐