Я готовился к раунду технического собеседования, и один из практических вопросов, с которыми я столкнулся, касался перестановки гласных в заданной строке. Хотя с логической точки зрения это выглядело достаточно просто, реализация не была… вначале.
Я наткнулся на несколько примеров в Интернете, которые я тоже не мог понять. Поэтому мне пришлось придумать другой способ, и вот мое решение.
function reverseVowels(str){ var vowels = “aeiouAEIOU”; var vowelsToReverse = []; for(i = 0 ; i< str.length ; i++){ if(vowels.indexOf(str[i]) > -1){ vowelsToReverse.push(str[i]); } } var strArray = str.split(‘’); var lastIndex = vowelsToReverse.length — 1; for( i = 0 ;i < strArray.length ; i++){ if(vowels.indexOf(strArray[i]) > -1){ strArray[i] = vowelsToReverse[lastIndex]; lastIndex — ; } } if(str !== strArray.join(‘’)) return strArray.join(‘’); else return “no vowels to replace”; } console.log(reverseVowels("bbb")); console.log(reverseVowels("hello world")); console.log(reverseVowels("Output"));
Единственное, что может сбивать с толку, - это использование str.split () и stringArray.join (). Это необходимо, потому что строки javascript неизменяемы и не могут быть заменены на месте, и поэтому массив может помочь выполнить замену гласных.
Надеюсь, это было достаточно легко понять