У меня есть следующая задача:
Создать метод, который принимает массив последовательных (увеличивающихся) букв в качестве входных данных и возвращает отсутствующую букву в массиве.
Вы всегда получите правильный массив.И всегда будет отсутствовать ровно одна буква.Длина массива всегда будет не меньше 2.
Массив всегда будет содержать буквы только в одном случае.
Пример:
['a','b','c','d','f'] -> 'e'
['O','Q','R','S'] -> 'P'
MyРешение, которое действительно плохое, таково:
public static char findMissingLetter(char[] array) {
char[] alphabet = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
int offset = 0;
int point = 0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < alphabet.length; j++) {
if (alphabet[j] == array[i]) {
offset = j;
point = offset + 1;
if (alphabet[point] != array[++i]) {
System.out.println(alphabet[point]);
return alphabet[point];
}
}
}
}
return ' ';
}
Теперь я нашел решение, которое действительно короткое, но я не понимаю код или, по крайней мере, я не понимаю, как без предоставления кода в спискеиз возможных букв он может знать, какая буква отсутствует:
public static char findMissingLetter(char[] array){
char expectedLetter = array[0];
for(char letter : array){
if(letter != expectedLetter) break;
expectedLetter++;
}
return expectedLetter;
}
Может кто-нибудь объяснить, как работает char и почему он знает, что отсутствует e, даже если я не предоставил массив всехбуквы?