寻找比目字母大的最小字母:
给你一个排序后的字符列表 letters ,列表中只包含小写英文字母。另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母。
在比较时,字母是依序循环出现的。举个例子:
如果目标字母 target = ‘z’ 并且字符列表为 letters = [‘a’, ‘b’],则答案返回 ‘a’
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-smallest-letter-greater-than-target
示例:
输入: letters = [“c”, “f”, “j”],target = “a”
输出: “c”
//直接利用差值进行判断
public class NextGreatestLetter {
public static char nextGreatestLetter(char[] letters, char target) {
int n = letters.length;
int tar = 26;
int j = 0;
char res = letters[0];
for (int i = 0; i < n; i++) {
if (target>letters[i]){
continue;
}
int c = Math.abs( target - letters[i]);
if (c != 0 && tar > c){
if (j == 0 || letters[i]<=j){
tar = c;
j = letters[i];
res= letters[i];
}
}
}
return res;
}
public static void main(String[] args) {
char[] letters = {'c','f','j'};
char target = 'd';
System.out.println(nextGreatestLetter(letters,target));
}
}