Пропущенные буквы - Missing letters
Седьмой день программы "#100 Days Of Code"
Функция, которая ищет пропущенные буквы в части строки, данной в алфавитном порядке. Если находит, то возвращает пропущенную букву, а если нет, то должна вернуть undefined
Если не понятно задание. то лучше сразу посмотреть на ответы в конце поста
Я решил эту задачу исходя из того, что каждой< букве будет соответствовать свой Юникод, а так как, в алфавитном порядке Юникод будет отличаться только на единицу , то ...
Решил строку превратить в массив и далее сделать перебор массива, переводя все буквы в Юникод и добавляя их в конец нового, пустого массива
Для перевода букв в Юникод я использовал String.prototype.charCodeAt()
Теперь в новом массиве мы имеем последовательность цифр Юникода. Наша задача найти пропущенную цифру. Для этого я решил запустить второй цикл for.
Вот эта строка условия ((numArray[k]+1) < (numArray[k+1]))
то есть, если следующая цифра будет больше, чем +1, то нужно к Юникоду предыдущей цифры прибавить единицу. Тем самым, мы получим Юникод недостающей буквы. Теперь делаем возврат. Юникод переводим в буквы, String.fromCharCode()
Да и возврат num в конце - обязательное условие, иначе не получим - желаемый undefined
function fearNotLetter(str) { var numArray = []; var num ; var strArray = str.split(""); var ch; for(var i = 0; i < strArray.length; i++){ numArray.push(str.charCodeAt(i)); } for(k = 0; k < numArray.length; k++){ if((numArray[k]+1) < (numArray[k+1])){ num = numArray[k]+1; return String.fromCharCode(num); } } return num; } fearNotLetter("abce");
Второй вариант решения
Здесь совершенно другой подход в том, что нужно создать отдельный массив с алфавитом
Полученную строку переводим в верхний регистр и разделяем ее по буквам. В отдельную переменную помещаем весь алфавит в верхнем регистре. Отдельно создаем переменную, которая будет находить в нашем алфавите первую букву от начала заданной нам последовательности. Создаем отдельно переменную под последнюю букву
Делаем проверку, сопоставляя буквы в двух массивах. Если находим несовпадение, то возвращаем эту букву в нижнем регистре.
Отдельно возвращаем undefined
Ничего не могу сказать по поводу этого решения, но мне первое нравится больше. Мне кажется, что оно более полно отражает возможности JavaScript
Друзья, а что думаете вы?
Есть ли у вас свои , отличные от этих решения?
Оставляйте комментарии, или ссылки на ваш gitHub, freeCodeCamp, Codepen или другие ресурсы.
Давайте дружить!
function fearNotLetter(str) { str = str.toUpperCase(); str = str.split(""); var 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']; var startRange = alphabet.indexOf(str[0]); var endRange = alphabet.indexOf(str[str.length-1]); for (var i=0; i < str.length; i++) { if (str[i] != alphabet[startRange+i]) { //str.splice(i, 0, alphabet[startRange+i]); //return str[i].toLowerCase(); return alphabet[startRange+i].toLowerCase(); }else { } } return undefined; } fearNotLetter("abce");
fearNotLetter("abce")
return "d".
fearNotLetter("abcdefghjklmno")
return "i".
fearNotLetter("bcd")
return undefined.
fearNotLetter("yz")
return undefined.
Комментариев нет:
Отправить комментарий