Algorithm Basic_#3


に質問📓
文字列入力を受け入れると、文字列に次のいずれかが存在するかどうかを返す必要があります.'a'で始まり、'b'で終わる長さ5の文字列.'b'で始まり、'a'で終わる長さ5の文字列.
-I/O
  • 入力:stringタイプのアルファベット文字列
  • 出力:booleanタイプ
  • -I/O例
    let output = ABCheck('lane Borrowed');
    console.log(output); // --> true
    -答えは?
    1)すべてのテキストを小文字または大文字に変換します.
    2)最初の文字がaまたはbで始まる場合、最初の文字の5番目の文字がaまたはbで終わる場合、最初の文字が最後の文字と異なる場合にのみtrueが返されます.
    function ABCheck(str) {
      let newStr = str.toLowerCase();
      for (let i = 0; i < newStr.length; i++) {
        if (newStr[i] === 'a' || newStr[i] === 'b') {
          if (newStr[i+4] === 'a' || newStr[i+4] === 'b') {
            if (newStr[i] !== newStr[i+4]) {
            return true;
          }
        }
      } 
    } return false;
    }
    -結果
    国境を越える👌
    - Reference code
    function ABCheck(str) {
      if (str === undefined) {
        return false;
      }
    
      str = str.toLowerCase();
    
      for (let i = 4; i < str.length; i++) {
        if (
          (str[i] === 'a' && str[i - 4] === 'b') ||
          (str[i] === 'b' && str[i - 4] === 'a')
        ) {
          return true;
        }
      }
    
      return false;
    }
  • 空の文字列に式を追加
  • 4番目のインデックスから繰り返し
  • 比較
  • i - 4の値は、最後に3番目の文字aまたはbが現れても、
  • は繰り返されません.

  •  for (let i = 0; i < str.length-4; i++) {
        if (
          (str[i] === 'a' && str[i + 4] === 'b') ||
          (str[i] === 'b' && str[i + 4] === 'a')
    質問です.📓
    「-」を追加し、入力した連続する桁数の間で返す文字列を返す必要があります.
    -I/O
  • 入力:文字列タイプの数値文字列
  • 出力:文字列タイプの数値文字列
  • -I/O例
    let output = insertDash('454793');
    console.log(output); // --> 4547-9-3
    -答えは?
    1)パラメータ値文字列をアルファベットで配列します.
    2)for文を使用して、iおよびi+1の値が奇数であるかどうかを決定する.
    3)配列法splice'を用いて'-'を2つの奇数の間に置く.
    4)配列を文字列joinに戻す方法
    function insertDash(str) {
      let arr = str.split('');
      for(let i=0; i < arr.length; i++) {
        if (Number(arr[i]) % 2 === 1 && Number(arr[i+1]) % 2 === 1) {
        arr.splice(i+1, 0, '-');
        }
      } return arr.join('');
    }
    -結果
    国境を越える👌
    - Reference code
    function insertDash(str) {
      let result = str[0];
      for (let i = 1; i < str.length; i++) {
        if (Number(str[i - 1]) % 2 && Number(str[i]) % 2) {
          result = result + '-';
        }
        result = result + str[i];
      }
    
      return result;
    }
    新しい変数resultの値に文字列の最初のインデックス値を割り当てて開始します.
    複文はインデックス1から確認します.
    質問です.📓
    文字列が要素の配列である場合は、最短文字列と最長文字列を削除する配列を返す必要があります.
    -I/O
  • 入力:文字列タイプが要素の配列/arr[i].length20未満
  • 出力:タイル
  • -I/O例
    let output = removeExtremes(['a', 'b', 'c', 'def']);
    console.log(output); // --> ['a', 'b']
    
    output = removeExtremes(['where', 'is', 'the', 'longest', 'word']);
    console.log(output); // --> ['where', 'the', 'word',]
    -答えは?
    1)パラメータ値配列の一番長い文字と一番短い文字を後から指定します.
    2)for文を使用してパラメータ値配列を後から問合せ、長文字より長い場合は長文字として指定します.短い文字の長さより短い場合は、短い文字として指定します.
    3)配列のfilterメソッドを使用して、長い、短い文字を除くすべての文字を新しい配列に挿入します.
    文字を直接指定するため、同じ長さの同じ文字はパラメータ値に入ると正しい結果が得られません.
    7つの技術ケースのうち6つを通過したが、結局話題を解くことができなかった.🧐
    function removeExtremes(arr) {
      // TODO: 여기에 코드를 작성합니다.
      // 같은 값 빈 문자열의 경우...
    let longestWord = arr[arr.length - 1];
    let shortestWord = arr[arr.length - 2];
    for (i = arr.length - 1; i >= 0; i--) {
    if (arr[i].length > longestWord.length) {
    longestWord = arr[i];
    } else if (arr[i].length < shortestWord.length) {
    shortestWord = arr[i];
    }
    } let newArr = arr.filter((el) => el !== longestWord);
    let new2Arr = newArr.filter((el) => el !== shortestWord);
    return new2Arr;
    }
    ### - 결과
    통과 못함 🙄
    
    ### - Reference code
    ```js
    function removeExtremes(arr) {
      let shortestLen = 20;
      let longestLen = 0;
      let shortestIdx = 0;
      let longestIdx = 0;
      for (let i = 0; i < arr.length; i++) {
        if (arr[i].length >= longestLen) {
          longestLen = arr[i].length;
          longestIdx = i;
        }
    
        if (arr[i].length <= shortestLen) {
          shortestLen = arr[i].length;
          shortestIdx = i;
        }
      }
    
      let result = [];
      for (let i = 0; i < arr.length; i++) {
        if (i !== shortestIdx && i !== longestIdx) {
          result.push(arr[i]);
        }
      }
    
      return result;
    }
    1)for文を最初から問い合わせる場合は、最後に検索する値を「同じ」条件で検索することもできます.
    2)特定の文字が長い文字、短い文字であることを指定しないで、最大長さと最小長さを基準値として、長さが長さより大きい文字または小さい文字を繰り返し比較する.
    3)インデックス値を個別に指定したり、すべての非インデックス値を新しい配列に追加したりする考えはすでに完了していますが、実際には実現していません.これは残念です.
    質問です.📓
    2 D配列(配列が要素)を入力すると、「B」位置情報を持つ配列を返す必要があります.
    I/O(注意事項)
  • 入力:配列が要素の配列/arr[i]が「A」または「B」のみが要素の配列
  • 出力:配列内の要素は「B」の位置情報(行、列)を要素とし、行、列(「行、列」)の順である.
    行:「B」を要素とする配列arr[i]のインデックスi/列:arr[i]から「B」(arr[i][j])へのインデックスj
  • 注意:arr、arr[i]の長さは多種多様/常に1つの文字列「B」
  • が存在する
    I/O例
    let output = findBugInApples([['A'], ['B']]);
    console.log(output); //[1, 0]
    
    output = findBugInApples([
      ['A', 'A', 'A', 'A', 'A'],
      ['A', 'B', 'A', 'A', 'A'],
      ['A', 'A', 'A', 'A', 'A'],
      ['A', 'A', 'A', 'A', 'A'],
      ['A', 'A', 'A', 'A', 'A'],
    ]);
    console.log(output); //[1, 1]
    私の答え
    1)ダブルfor文を使用して配列内の配列を問合せます.クエリの値が「B」の場合、インデックス値が返されます.
    function findBugInApples(arr) {
      for (let i = 0; i < arr.length; i++) {
        for (let j = 0; j < arr[i].length; j++) {
          if (arr[i][j] === 'B') {
            return [i, j]
          }
        }
      } 
    }
    -結果
    国境を越える👌