Memecahkan pertanyaan algoritmik umum di JavaScript

Pernahkah Anda mencoba mengembangkan algoritme untuk memecahkan masalah dalam wawancara teknis? Dalam tutorial singkat ini, kita akan membahas tiga pertanyaan utama tentang desain algoritma, dimulai dengan brute force (langkah demi langkah, tetapi belum tentu efisien) dan beralih ke solusi yang lebih ramping dan elegan.



gambar



Garis menyebar



Tugas



Setelah menerima string, Anda perlu mengembangkannya.



Solusi # 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

. , β€” !



Saya menyiarkan ini dan banyak artikel berguna lainnya untuk pengembang Frontend pemula di saluran Telegram Frontend.school () , di mana saya juga menyiapkan kuis yang berguna untuk menguji pengetahuan saya. Saya menarik perhatian Anda pada fakta bahwa saluran tersebut murni hobi dan keinginan untuk membantu serta tidak membawa manfaat materi bagi saya.




All Articles