中間文字を入力


1.中間文字を入力
  • 質問:
    単語sの中間文字を返す関数を作成します.単語の長さが偶数の場合は、中間の2文字を返します.
  • 条項:
    sは、1または100より長い文字列です.
  • I/O例
    s : "abcde", "qwer"
    return : "c", "we"
  • トラブルシューティング手順
    1.単語s文字列の長さを格納する変数が必要です.
    2.単語の長さが奇数の場合は中間の1つを返し、偶数の場合は中間の2つを返します.
    3.奇数、偶数の区切りは単語の長さを2で割ったもので、残りが0の場合は偶数または奇数で区切ります.
    4.単語長が奇数の場合、
    単語長を2で割った場合,シェアはインデックス値となり,中間文字のインデックス値となる.
    5.単語長が偶数の場合、
    単語の長さを2で割った場合,シェアは中間2文字のうち2番目の文字のインデックス値となる.
    では、中間2文字のうち1文字目のインデックス値をシェアで-1とすればよい.
    7.Tip:JavaScript/演算子で除算する場合、小数点を小数点として表すことができるので、Mathオブジェクトのfloor()メソッドを使用して小数点を破棄します.
    ex) Math.floor(2.5); 結果:
  • function solution(s) {
        
        var sLength = s.length;     // 단어길이를 변수에 할당. 
        
        var wordNam = sLength%2;    // 단어를 "2"로 나누었을때 나머지
        var wordMok = Math.floor(sLength/2);    // 단어를 "2"로 나누었을때 몫 , Math.floor() 를 이용하여 소수점 없앤다.
        
        var midWordIndex;           // 단어의 가운데 문자 index 값을 저장할 변수 선언
        var answer = '';
        
        if (wordNam != 0) {         // 나머지가 0이 아니면, 즉 단어의 길이가 홀수일때
            midWordIndex = wordMok; // 몫 값을 이용하여 가운데 글자 index값을 저장할 변수에 할당
            answer = s.charAt(midWordIndex); // charAt() 메서드를 사용하여 해당 index에 있는 문자를 반환 
        } else {                    // 나머지가 0일때, 즉 짝수일때
            midWordIndex = wordMok; // 몫 값을 이용하여 가운데 두글자중 두번째 문자 index로 할당.
            answer = s.charAt(midWordIndex -1) + s.charAt(midWordIndex); 
            // minWordIndex 값은 두번째 문자이므로 첫번째 문자는 해당 값에 -1을 하면 첫번째 문제 index가 된다. 
      
        }
        return answer;
    }
    上記のコード
  • に示すように、これらの問題について説明した.
  • コードが長すぎるので、Stringオブジェクトのメソッドでインデックス値に基づいて文字列の文字を返す方法を探しました.
  • substring()メソッドを使用してコードを再記述します.
  • function solution(s) {
        
        var sLength = s.length;
        
        var wordNam = sLength%2;
        var wordMok = Math.floor(sLength/2);
        
        var answer = '';
        
        if (wordNam != 0) { 
            answer = s.substring(wordMok,wordMok+1);
            // 홀수일 경우에는 가운데 문자 하나만 필요하므로 
            // substring()의 첫번째 인자로 몫 값을, 두번째 인자로 몫 + 1 을 하여 length 값을 지정
            
        } else {
            answer = s.substring(wordMok-1,wordMok+1);
            // 짝수일 경우에는 가운데 문자 두개가 필요하므로
            // substring() 첫번째인자로 몫-1 을 하여 첫번째 문자 index로 지정
            // 두번째 인자로 몫+1을 하여 length 값을 지정
        }
        
        
        return answer;
    }
  • の上のコードのように、まずsubstring()メソッドを使用してより簡潔に記述します.
  • ですが、私はまだ少し不満です.もっと簡潔に表現できる気がする.
  • だからif文を一言で表現したい.
  • メソッドは、3つの条件演算子(「条件」?真の行:偽の行)を使用します.
  • function solution(s) {
        var wordNam = (s.length)%2;
        var wordMok = Math.floor(sLength/2);
        
        var answer = '';
        
        answer = wordNam != 0 ? s.substring(wordMok,wordMok+1) : s.substring(wordMok-1,wordMok+1);
        
        return answer;
    }
    前の
  • に示すように、if文の代わりに3つの条件演算子を使用して1行を記述しました.
  • をより簡潔に記述するために、単語sのlength値を変数に格納する必要がなく、vars length変数が消去される.
  • ここでは、Stringオブジェクトのsubstring()メソッドではなくsubstr()メソッドを使用してコードを再記述してみます.
  • substr()メソッドはindexを使用して文字列の文字を返します.ここで、substring()メソッドとの違いは、substring()メソッドの2番目のパラメータlengthの基準が1番目のパラメータによってlength値を指定し、substring()メソッドの2番目のパラメータlength値が文字列全体の1番目の基準として指定されることである.
  • function solution(s) {
        var wordNam = (s.length)%2;
        var wordMok = Math.floor(s.length/2);
     
        var answer = '';
        
        answer = wordNam != 0 ? s.substr(wordMok,1) : s.substr(wordMok-1,2);
        // wordMok 변수를 이전엔 두개의 인자를 넘길때 다 넣어주었는데 메서드를
        // substr()로 변경하면서 첫번째 인자에만 넣어주었다. 
        // 그 이유는 substr() 메서드의 두번째 인자 length 값의 기준이 첫번재 인자가 되기 때문이다.
        
        return answer;
    }
    上記のコード
  • に示すように、substr()メソッドを使用してパラメータを伝達する場合、記述プロセスはより簡潔である.
  • コードコメント
    1.最初にif文を使用してコードを記述します.if文を使用する場合、この問題の条件は次のとおりです.2つの擬似関数実行ブロックで1つの実行のみを使用すると、if文ではなく3つの条件演算子を使用するため、3つの条件演算子を使用してコードを簡略化できます.
    したがって、関数実行ブロックの内容が複雑でない場合、または2つ未満の場合、3つの条件演算子を使用してコードを簡略化することができる.
  • String(オブジェクト)メソッドをさらにチェックすると、目的を明確に満たし、コードを簡略化する方法があります.その方法をうまく利用しよう!
  • リファレンスサイト
    https://poiemaweb.com/js-string
    https://poiemaweb.com/js-math