Algorithm|奇妙な文字を作成


問題の説明


文字列sは、1つ以上の単語から構成される.各単語は1つ以上のスペース文字で区切られます.各単語の偶数の2番目のアルファベットは大文字で、奇数の2番目のアルファベットは小文字で置換された文字列を返す関数で、解決策を完了します.

せいげんじょうけん

  • 文字列全体のパリティインデックスではなく、単語(スペース単位)に基づいてパリティインデックスを決定する必要があります.
  • 最初の文字は、0番目のインデックスとして偶数文字でなければなりません.

  • nresult"try hello world""TrY HeLlO WoRlD"

    I/O例説明


    「tryhello world」は、3つの単語「try」、「hello」、「world」から構成されています.各単語の偶数の2番目の文字を大文字に、奇数の2番目の文字を小文字に、すなわち「Try」、「Hello」、「World」に変更します.そこで、「Try Hello World」に戻ります.

    📍初めての試み

    function solution(s) {
        let answer = '';
        let sArr = s.split(' ');
        for(let i=0; i<sArr.length; i++){
          let stringArr = sArr[i].split('');
          for(let j=0; j<stringArr.length; j++){
            if(j%2 === 0) stringArr[j] = stringArr[j].toUpperCase() ;
            
            if(j === stringArr.length-1){
              answer = answer + stringArr.join('');
            }
          }
          if(i !== sArr.length-1 )answer = answer + ' ';
        }
        return answer;
    }

    「文字列sは、1つ以上の単語からなる」そう書いてあります.
    すなわち、sは「tryhelloworld」であってもよいし、「tryhelloworld」であってもよい.
    すなわち、偶数の2番目の文字を大文字の論理に変更するだけでなく、奇数の2番目の文字を小文字の論理に変換する必要がある.

    📍二次試行

    function solution(s) {
        let answer = '';
        let sArr = s.split(' ');
        for(let i=0; i<sArr.length; i++){
          let stringArr = sArr[i].split('');
          for(let j=0; j<stringArr.length; j++){
            if(j%2 === 0){
             stringArr[j] = stringArr[j].toUpperCase() ;
            }else{
             stringArr[j] = stringArr[j].toLowerCase() ; // 홀수 -> 소문자
            }
            if(j === stringArr.length-1){
              answer = answer + stringArr.join('');
            }
          }
          if(i !== sArr.length-1 )answer = answer + ' ';
        }
        return answer;
    }

    反省点。


    I/Oの例を見て問題の答えを判断するのではなく、与えられた問題と制限に基づいて問題を解決しなければならない.

    📍私のもう一つの解釈。

    function solution(s) {
        let answer = s.split(' ').map( word => {
          let newWord = '';
          for(let i = 0; i<word.length; i++){
            i%2 ? newWord+= word[i].toLowerCase() : newWord+= word[i].toUpperCase();
          }
          return newWord;
        }).join(' ')
        
        return answer;
    }