Find Smallest Letter Greater Than Target (Leetcode 744)

Problem Link: https://leetcode.com/problems/find-smallest-letter-greater-than-target/

class Solution:
    def nextGreatestLetter(self, letters: List[str], target: str) -> str:
               
        def modifiedbsearch(letters,target,i,j,n):
            
            mid=j-(j-i)//2
            while(i<=j):
                
                if(letters[mid]==target):
                    
                    # If target is repeated in array
                    while(mid+1<n and letters[mid]==letters[mid+1]):
                        mid+=1
                    self.ans=mid+1
                    return
                
                elif(ord(letters[mid])>ord(target)):
                    self.ans=mid
                    return modifiedbsearch(letters,target,i,mid-1,n)
                else:
                    return modifiedbsearch(letters,target,mid+1,j,n)
            
        self.ans=-1
        n=len(letters)
        i=0
        j=n-1
        modifiedbsearch(letters,target,i,j,n)
        
        # if target == 'z' and letters == ['a', 'b'], the answer is 'a'
        if(self.ans==n or self.ans==-1):
            self.ans=0
        return letters[self.ans]

Last updated