链接:https://leetcode-cn.com/problems/find-smallest-letter-greater-than-target/
思路:
- 根据题意,我们需要找到比目标字符大且最近的一位,很轻易地就可以想到用两个字符相减就可以获得两个数的相对位置,我们用
min
来记录 - 如果
letters[i] - target > 0 && letters[i] - target < min
,我们就更新字符和最小值 - 注意:target比所有数组中的字符都大时候,要返回字符的第一个数,这道题的字符数组是有序的,但是如果是无序的,个人认为用
if(target >= letters[letters.size() - 1]) target = 'a' - 1;
这个来更新一下target更好一点
代码:
class Solution {
public:
char nextGreatestLetter(vector<char>& letters, char target) {
char ans;
int min = 27;
if(target >= letters[letters.size() - 1]) target = 'a' - 1;
for(int i = 0; i < letters.size(); i++){
if(letters[i] - target > 0 && letters[i] - target < min){
ans = letters[i];
min = letters[i] - target;
}
}
return ans;
}
};