Algorithms_string reversal, palindromes, Integer Reversal, MaxChars,FizzBuzz

chloe·2021년 2월 12일
0

TIL

목록 보기
47/81
post-thumbnail

String Reversal

// reverse('apple') === 'leppa'
// reverse('hello') === 'olleh'

  1. 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. 주어진 문자열을 reverse해야 한다.
2. reverse된 문자열과 기존의 문자열이 동일하다는 것을 표현해야 한다.

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

  1. reverse하기 전에 넘버를 string으로 바꿔보자
  2. string reversal과 같은 방법을 쓰면된다.
  3. 문제가 발생했다. -인경우, 리턴을 했는데 숫자가 아닌 string으로 나옴..
  4. 스트링이 아닌 숫자로 return을 하기 위해서는 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을 반환 음수면 -1을 반환하고 0이면 0, -0이면 -0을 반환하고 NaN이면 NaN을 반환한다.

Max Chars

// maxChar("abcccccccd") === "c"
// maxChar("apple 1231111") === "1"
1. 객체 형태의 character map을 만들자.
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);
    }
  }
}
profile
Front-end Developer 👩🏻‍💻

0개의 댓글