Resolver preguntas algorítmicas comunes en JavaScript

¿Ha intentado alguna vez desarrollar un algoritmo para resolver un problema en una entrevista técnica? En este breve tutorial, abordaremos tres preguntas principales sobre el diseño de algoritmos, comenzando con la fuerza bruta (paso a paso, pero no necesariamente de manera eficiente) y pasando a una solución más simplificada y elegante.



imagen



Extensión de línea



Tarea



Habiendo recibido la cadena, debe expandirla.



Solució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

. , — !



Transmito este y muchos otros artículos útiles para desarrolladores de Frontend principiantes en el canal de Telegram Frontend.school () , donde también preparo pruebas útiles para poner a prueba mis conocimientos. Llamo su atención sobre el hecho de que el canal es puramente un pasatiempo y un deseo de ayudar y no me aporta beneficios materiales.




All Articles