Given a list of sorted characters letters
containing only lowercase letters, and given a target
letter target, find the smallest element in the list that is larger than the given target.
Letters also wrap around. For example, if the target is target = 'z'
and letters = ['a', 'b']
, the answer is 'a'
.
Input: letters = ["c", "f", "j"] target = "a" Output: "c" Input: letters = ["c", "f", "j"] target = "c" Output: "f" Input: letters = ["c", "f", "j"] target = "d" Output: "f" Input: letters = ["c", "f", "j"] target = "g" Output: "j" Input: letters = ["c", "f", "j"] target = "j" Output: "c" Input: letters = ["c", "f", "j"] target = "k" Output: "c"
letters
has a length in range[2, 10000]
.letters
consists of lowercase letters, and contains at least 2 unique letters.target
is a lowercase letter.
impl Solution {
pub fn next_greatest_letter(letters: Vec<char>, target: char) -> char {
for &ch in &letters {
if ch > target {
return ch;
}
}
letters[0]
}
}
impl Solution {
pub fn next_greatest_letter(letters: Vec<char>, target: char) -> char {
match letters.binary_search(&target) {
Ok(i) => letters[(i + 1) % letters.len()],
Err(i) => letters[i % letters.len()],
}
}
}