[Lv.1]文字列内で任意に並べ替えます(✩✩)-質問

15019 ワード

質問:https://programmers.co.kr/learn/courses/30/lessons/12915
体感難易度:

🔶 私のやり方

  • alphaオブジェクトに数字を合わせる
  • 文字列のn番目のアルファベットをalphaオブジェクトのキーで検索し、その値の数値を検索します.
  • 変数obj,{3:[「abce」,「abcd」,24:[「cdx」};こうやって作る
  • objを迂回し、結果配列にobj値の配列要素を含む.
    配列に2つ以上の要素がある場合は、アルファベット順に並べます.
  • は、
  • の結果を返します.
  • function solution(strings, n) {
      const alpha = {a: 1, b: 2, c: 3, d: 4, e: 5, f: 6, g: 7, h: 8, i: 9, j: 10, k: 11, l: 12, m: 13, n: 14, o: 15, p: 16, 
        q: 17, r: 18, s: 19, t: 20, u: 21, v: 22, w: 23, x: 24, y: 25, z: 26 };
    
      // 1. { 3: ['abce', 'abcd'], 24: ['cdx'] }; 이렇게 만들기
      const obj = {}; 
      strings.forEach((el) => {
        const number = alpha[el[n]];
    
        if (obj[number]) {
          obj[number] = [...obj[number], el];
          return;
        }
        obj[number] = [el];
      });
    
      // 2. 같은 순서 있으면 문자순으로 정렬하여 결과값 배열로 출력.
      const result = [];
      for (const [key, value] of Object.entries(obj)) {
        value.sort();
        result.push(...value);
      }
    
      return result;
    }
    
    console.log(solution(['sun', 'bed', 'car'], 1)); // ["car", "bed", "sun"]
    console.log(solution(['abce', 'abcd', 'cdx'], 2)); // ["abcd", "abce", "cdx"]

    🔶 他人のやり方

  • 法1−nは、各文字列のゲルの前に第1のアルファベットを貼り合わせる.
    (nで並べ替えます.nが同じ場合、後の文字は同時に並べ替えられます.)
  • function solution(strings, num) {
      const arr = strings.map((el) => el[num] + el); // ['cabce', 'cabcd', 'xcdx']
      arr.sort(); // ['cabcd', 'cabce', 'xcdx']
      return arr.map((el) => el.slice(1));
    }
    方法2-sort使用110 sort使用方法の問題!
    function solution(strings, n) {
        var answer = [];
        strings.sort((a,b)=>{
            if(a[n]>b[n]){
                return 1
            } else if(b[n]>a[n]){
                return -1
            } else if(a[n]==b[n]){
                if(a>b){
                    return 1
                } else if(a<b){
                    return -1
                }   else{
                    return 0
                }
            }
        })
        return strings
    }

    🔶 フィードバック

  • sortメソッドの使用方法が不明です.(質問)