Avez-vous déjà essayé de développer un algorithme pour résoudre un problème lors d'un entretien technique? Dans ce court didacticiel, nous aborderons trois questions principales sur la conception d'algorithmes, en commençant par la force brute (étape par étape, mais pas nécessairement efficacement) et en passant à une solution plus rationalisée et élégante.
Étalement de la ligne
Tâche
Après avoir reçu la chaîne, vous devez la développer.
Solution n ° 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
. , — !
J'ai diffusé ceci et de nombreux autres articles utiles pour les développeurs Frontend débutants sur le canal Telegram Frontend.school () , où je prépare également des quiz utiles pour tester mes connaissances. J'attire votre attention sur le fait que la chaîne est purement un passe-temps et un désir d'aider et n'apporte pas d'avantages matériels pour moi.