Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 대상보다 큰 가장 작은 문자 찾기

<시간/>

정렬된 문자의 목록이 있다고 가정합니다. 여기에는 소문자만 포함되어 있습니다. 이제 대상 문자 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