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

1 Answer

0 votes
fn find_smallest_letter_greater_than_target(letters: &[char], given_letter: char) -> char {
    let mut left = 0;
    let mut right = letters.len() - 1;
    let mut result = letters[0]; // Default to the first letter (wrap-around case)

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

        if letters[mid] > given_letter {
            result = letters[mid];
            if mid == 0 {
                break; // Prevent underflow
            }
            right = mid - 1; // Narrow down to the left half
        } else {
            left = mid + 1; // Narrow down to the right half
        }
    }

    result
}

fn main() {
    let letters = ['c', 'e', 'k', 'm'];
    let given_letter = 'd';

    let result = find_smallest_letter_greater_than_target(&letters, given_letter);

    println!(
        "The smallest letter greater than '{}' is: {}",
        given_letter, result
    );
}



/*
run:

The smallest letter greater than 'd' is: e

*/

 



answered Sep 22 by avibootz
...