본문 바로가기
2. 우당탕탕 개발자/2-1. 공부기록

2021.8.2 TIL 회문문자열,팰린드롬,숫자추출

by Little Monkey 2021. 8. 2.
반응형

 

 

회문 문자열 체크

회문 문제열 'abba'인지 아닌지 체크. 대/소문자는 구분하지 않는다. 'gooG' => 'true'

 

function solution(str) {
  let answer;
  // code here;
  return answer;
}

 

 

답) 주어진 문자열을 반으로 갈라서 비교

 

function solution(str) {
  let answer = true;
  let capital = str.toUpperCase();
  let n = str.length;
  let mid = Math.floor(n/2);

  for(lef i = 0; i < mid; i++) {
    if(capital[i] !== capital[n - i - 1]){
      answer = false;
      break;
    }
  };

  return answer;
}

 

 

답) 주어진 문자열을 거꾸로 배열하여 원 문자열과 비교

 

function solution(str) {
  let answer = true;
  let capital = str.toUpperCase();
  let reverse = str.split('').reverse().join('');

  if(capital !== reverse) answer = false;

  return answer;
}

 

 

팰린드롬 유효성 체크

회문 문자열과 동일하다. 대소문자 구분하지 않고, 알파벳 이외의 문자는 모두 무시한다.

 

function solution(str) {
  let answer;
  // code here;
  return answer;
}
let example = 'found7, time: study; Yduts; emit, 7Dnuof';
console.log(solution(example)) // true;

 

 

답) 아스키 코드를 이용한다

대문자는 65

92, 소문자는 97

122임을 이용

 

function solution(str) {
  let answer = true;
  let target = str.toUpperCase();
  let reverse = str.split('').reverse().join('');

  for(let i = 0; i < target.length; i++) {
    let code = target[i].charCodeAt();
    if(code < 65 || code > 92) {
      continue;
    }
    if(target[i] !== reverse[i]) {
      answer = false;
      break;
    }
  };

  return answer;
}

 

 

답) 정규식 이용한다.

 

function solution(str) {
  let answer = true;
  let target = str.toUpperCase();
  target = target.replace(/[^A-Z]/g, '');
  let reverse = target.split('').reverse().join('');

  if(target !== reverse) answer = false;

  return answer;
}

 

 

숫자만 추출

문자와 숫자가 섞여 있는 문자열이 주어지면, 그 숫자만 추출하여 자연수를 만든다.

 

function solution(str) {
  let answer;
  // code here;
  return answer;
}
let example = 'g0en2T0s8eSoft';
console.log(solution(example)) // 208;

 

 

답) 숫자냐? isNaN 이용

 

function solution(str) {
  let answer = '';
  for(let el of str) {
    if(!isNaN(el)) { 
      // Number(el) === NaN은 통하지 않음..
      // isNam('2') false 반환함.
      answer += el;
    }
  }
  return Number(answer); //parseInt(answer)가능
  //0208일 경우, 208 자연수를 리턴해야 하기 때문
}

 

 

답) 정규식 이용

/[]괄호에 해당하는것

/[^]괄호에 해당하지 않는 것

/g 전체를 적용할 것.

/[a-zA-Z] 알파벳

/[^a-zA-Z]알파벳 제외하고

 

function solution(str) {
  let answer = str.replace(/[^0-9]/g, '');
  return parseInt(answer);
}
반응형

댓글