Você já tentou desenvolver um algoritmo para resolver um problema em uma entrevista técnica? Neste breve tutorial, abordaremos três questões principais sobre o projeto de algoritmos, começando com a força bruta (passo a passo, mas não necessariamente de forma eficiente) e avançando para uma solução mais simples e elegante.
Espalhamento de linha
Tarefa
Tendo recebido a corda, vocĂŞ precisa expandi-la.
Solução # 1
string.substring(), str . .
— , . , myString.substring(1), .
() . . , .
, , string.charAt(). charAt : , .
.
// â„–1: Substring
function reverseString(str) {
let reversedString = '';
/* str
, i str.length
str, , .
*/
for (let i = str.length; i > 0; i--) {
reversedString += str.substring(i, i-1);
}
return reversedString;
}
// â„–2: CharAt
function reverseString(str) {
let reversedString = '';
/* str
i str.length-1 , i 0.
, ,
*/
for (let i = str.length-1; i >= 0; i--) {
reversedString += str.charAt(i);
}
return reversedString;
}
â„–2
— , .
:
string.split() — .
string.reverse() — .
string.join() — .
.
function reverseString(str) {
return str.split('').reverse().join('');
}
.
â„–1
string.split(' ') . , .
. . , , ! , .
for array.forEach(). , , .
// for
function findLongestWordLength(str) {
let maxVal = 0;
const wordArr = str.split(' ');
for(let i = 0; i < wordArr.length; i++) {
let word = wordArr[i];
if (word.length > maxVal) {
maxVal = word.length;
}
}
return maxVal;
}
// array.forEach
function findLongestWordLength(str) {
let maxVal = 0;
const wordArr = str.split(' ');
wordArr.forEach(word => {
if (word.length > maxVal) {
maxVal = word.length;
}
});
return maxVal;
}
â„–2
, string.split(), .
array.map(), . , .
arrOfLengths.
, Math.max(...spreadOperator) spread , .
function findLongestWordLength(str) {
const arrOfWords = str.split(' ');
const arrOfLengths = arrOfWords.map(item => item.length);
return Math.max(...arrOfLengths);
}
, . 4 .
[1,2,3,4]
[5,18,0,12]
[3,5,12,5]
[28,9,2,34]
Should return => [4,18,12,34]
â„–1
for-loop.
, .
// for
function largestOfFour(arr) {
let arrayOfMaxValues = [];
for (let i = 0; i < arr.length; i++) {
let subArr = arr[i];
let maxSubArrVal = 0;
for (let j = 0; j < subArr.length; j++) {
let currentValue = subArr[j];
if (currentValue > maxSubArrVal) {
maxSubArrVal = currentValue;
}
}
arrayOfMaxValues.push(maxSubArrVal);
}
return arrayOfMaxValues;
}
// forEach
function largestOfFour(arr) {
let arrayOfMaxValues = [];
arr.forEach(subArr => {
let maxSubArrVal = 0;
subArr.forEach(item => {
if (item > maxSubArrVal) {
maxSubArrVal = item;
}
});
arrayOfMaxValues.push(maxSubArrVal);
});
return arrayOfMaxValues;
}
â„–2
Math.max(...spreadOperator) array.map() , .
function largestOfFour(arr) {
return arr.map(subArr => Math.max(...subArr));
}
"Breaking Down JavaScript Solutions To Common Algorithmic Questions (Part 1)" by Emma Bostian
. , — !
Eu transmito este e muitos outros artigos Ăşteis para desenvolvedores de front-end iniciantes no canal Frontend.school () Telegram , onde tambĂ©m preparo questionários Ăşteis para testar meus conhecimentos. Chamo a atenção para o fato de que a canalização Ă© puramente um hobby e uma vontade de ajudar e nĂŁo traz benefĂcios materiais para mim.