How to find the smallest letter in a sorted array that is larger than a given letter in Java

1 Answer

0 votes
public class FindNextLetter {

    // Function to find the smallest letter greater than the given letter
    public static char findSmallestLetterGreaterThanTarget(char[] letters, char givenLetter) {
        int left = 0;
        int right = letters.length - 1;
        char result = letters[0]; // Default to the first letter

        while (left <= right) {
            int mid = left + (right - left) / 2;

            if (letters[mid] > givenLetter) {
                result = letters[mid];
                right = mid - 1; // Narrow down to the left half
            } else {
                left = mid + 1; // Narrow down to the right half
            }
        }

        return result;
    }

    public static void main(String[] args) {
        char[] letters = {'c', 'e', 'k', 'm'};
        char givenLetter = 'd';

        char result = findSmallestLetterGreaterThanTarget(letters, givenLetter);

        System.out.println("The smallest letter greater than '" + givenLetter + "' is: " + result);
    }
}


/*
run:

The smallest letter greater than 'd' is: e

*/

 



answered Sep 20 by avibootz
edited Sep 21 by avibootz
...