Haben Sie jemals versucht, in einem technischen Interview einen Algorithmus zur Lösung eines Problems zu entwickeln? In diesem kurzen Tutorial werden drei Hauptfragen zum Algorithmusdesign behandelt, beginnend mit Brute Force (Schritt für Schritt, aber nicht unbedingt effizient) und einer optimierten, eleganteren Lösung.

Linienspreizung
Aufgabe
Nachdem Sie die Zeichenfolge erhalten haben, mĂĽssen Sie sie erweitern.
Lösung Nr. 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
. , — !
Ich sende diesen und viele andere nützliche Artikel für Anfänger-Frontend-Entwickler auf dem Frontend.school () -Telegrammkanal , wo ich auch nützliche Tests vorbereite, um mein Wissen zu testen. Ich mache Sie darauf aufmerksam, dass der Kanal ein reines Hobby und ein Wunsch zu helfen ist und mir keine materiellen Vorteile bringt.