我写了一个代码,目的是在字母之后返回最小的target字母h,所以在这种情况下,它是i. 但是,下面的代码不会产生输出。有任何想法吗?我感觉问题出在第一个if语句中。
letters = [
'a',
'b',
'c', 'c', 'c', 'c',
'd',
'e', 'e', 'e',
'g',
'h', 'h', 'h',
'i',
'j',
'k', 'k', 'k',
'l',
'm',
'n',
'o',
'p', 'p', 'p',
'q',
'r',
's', 's',
't'
]
target = 'h'
left = 0
right = len(letters) - 1
mid = left + (right - left) // 2
while left < right:
if mid == target:
for i in range(letters[mid], letters[len(letters)]):
if letters[i] != target:
print(letters[i])
break
if letters[mid] < target:
left = mid + 1
elif letters[mid] > target:
right = mid - 1
Run Code Online (Sandbox Code Playgroud)
letters = ['a','b','c','c','c','c','d','e','e','e','g','h','h','h','i','j','k','k','k','l','m','n','o','p','p','p','q','r','s','s','t']
target = 'h'
# Find only after target
letters = letters[letters.index(target):]
# Remove target from list
letters = [x for x in letters if x != target]
# Sort list
letters.sort()
# Find char representation of lowest
print(letters[0])
Run Code Online (Sandbox Code Playgroud)