Algorithms_string reversal, palindromes, Integer Reversal, MaxChars,FizzBuzz


String Reversal


// reverse('apple') === 'leppa'
// reverse('hello') === 'olleh'
  • solution
  • function reverse(str) {
      const arr = str.split("");
      arr.reverse();
      return arr.join("");
    }
    function reverse(str) {
      return str.split("").reverse().join("");
    }
    2.solution
    function reverse(str){
      let reversed = "";
      for (let character of str) {
        reversed = character + reversed;
      }
      return reversed;
    }
    3.solution
    function reverse(str) {
      return str.split("").reduce((rev, char) => char + rev, "");
    }
    reduce()メソッドは、アレイ内の各要素に対して所与のreducer関数を実行し、結果値を返します.

    Palindromes


    例文
    //palidrome("abba")===true
    //palidrome("abcdefg")===false
    1.指定した文字列を反転する必要があります.
    2.逆文字列が既存の文字列と同じであることを示す必要があります.
    function palindrome(str) {
      const reversed = str.split("").reverse().join("");
      return str === reversed;
    }

    Integer Reversal


    // reverseInt(15) === 51
    // reverseInt(981) === 189
    // reverseInt(500) === 5
    // reverseInt(-15) === -51
    // reverseInt(-90) === -9
  • が逆転する前に、番号を文字列
  • に変えましょう.
  • 文字列反転と同様の方法を使用すればよい.
  • の問題が発生しました仁景、ちょっと戻ってみましたが、数字ではなく文字列でした.
  • 文字列ではなく、ParseIntを使用して数値を返します.
    5-であればifゲートが0未満の場合-1を乗じて設定すればよい.
  • function reverseInt(n) {
      const reversed = n.toString().split("").reverse().join("");
      if (n < 0) {
        return parseInt(reversed) * -1;
      }
      return parseInt(reversed);
    }
    Math.sign()を使用すると、コードをより簡単に記述できます.
    
    function reverseInt(n) {
      const reversed = n.toString().split("").reverse().join("");
    
      return parseInt(reversed) * Math.sign(n);
    }
    Math.Signは正負面−1,0は0,−0は−0,NaNはNaNを返す.

    Max Chars


    //maxChar("abcccccccd") === "c"
    //maxChar("apple 1231111") === "1"
    1.オブジェクトシェイプの文字マッピングを作成します.
    stringをオブジェクトとして作成(各文字数)
    function maxChar(str) {
      const charMap = {};
      let max = 0;// 초기값 설정
      let maxChar = "";// 초기 값 string
      ex)"hello"=> {H:1,e:1,l:2,0:1}
    // string 반복 for of문
      for (let char of str) {
        if (charMap[char]) {
          charMap[char]++;
        } else {
          charMap[char] = 1;
        }
      }
      //객체 안 반복 for in문
      for (let char in charMap) {
        if (charMap[char] > max) {
          max = charMap[char];
          maxChar = char;
        }
      }
      return maxChar;
    }

    FizzBuzz


    ex)3の倍数はfizz出力、5の倍数はbuzz出力、3と5の倍数はfizzbuzz出力
    function fizzBuzz(n) {
      for (let i = 1; i <= n; i++) {
        //Is the number a multiple of 3 and 5?
        if (i % 15 === 0) {
          console.log("fizzbuzz");
        } else if (i % 3 === 0) {
          //Is the number a multiple of 3?
          console.log("fizz");
        } else if (i % 5 === 0) {
          console.log("buzz");
        } else {
          console.log(i);
        }
      }
    }