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
*/