정렬된 문자의 목록이 있다고 가정합니다. 여기에는 소문자만 포함되어 있습니다. 이제 대상 문자 t가 있으므로 목록에서 주어진 대상보다 큰 가장 작은 요소를 찾아야 합니다.
그리고 편지도 감싸고 있습니다. 따라서 대상이 t ='z'이고 문자 =['a', 'b']이면 답은 'a'입니다.
따라서 입력이 ["c", "f", "j"], t ='a'와 같으면 출력은 'c'가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- l :=0
- r :=글자 크기 - 1
- l <=r인 동안, do
- mid :=(l + r) / 2를 정수로
- 문자[mid]> 대상이면
- r :=중간 -1
- 그렇지 않으면
- l :=중간 + 1
- 문자 반환[l 모드 문자 크기]
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def nextGreatestLetter(self, letters, target): l = 0 r = len(letters) - 1 while l <= r: mid = (l + r)//2 if letters[mid] > target: r = mid -1 else: l = mid + 1 return letters[l % len(letters)] ob = Solution() print(ob.nextGreatestLetter(["c", "f", "j"], "a"))
입력
["c", "f", "j"], "a"
출력
c