[LeetCode] 125. Valid Palindrome

#125. Valid Palindrome

str.toLowerCase()

문제

입력받은 문자열에서 영문자와 숫자만 고려해서(대소문자 무시) 회문인지 확인해서 true/ false 반환.

설명

우선 회문은 뒤집어도 똑같은 문자열을 말합니다. 예를들어 기러기, 탄도유도탄, 다들 잠들다 같은 말입니다.

소문자로 만들기

제가 생각한 방법은 주어진 문자열 sstr.toLowerCase() 를 이용해서 소문자로 만들어 줍니다.

숫자와 문자를 제외한 모든것 제거

그 후에 숫자와 문자를 제외한 모든것을 str.replace()를 이용해서 제거하고,

문자열 뒤집기

문자열을 뒤집어 주기 위해서 split() 으로 문자열을 쪼개서 배열로 만들고, reverse() 를 이용해서 배열의 순서를 뒤집고, join() 을 이용해서 배열을 문자열로 만들고 나면 뒤집어진 문자열이 생성됩니다.

반환하기

이 뒤집힌 문자열과 입력받은 문자열이 같은지 확인하고 결과를 리턴해줍니다.

조금 더 자세한 설명은 답의 주석을 참고하세요!

1
2
3
4
5
var isPalindrome = function(s) {
  const replace = s.toLowerCase().replace(/[^a-z0-9]/gi,""); // 입력 받은 문자열을 소문자로 만들고 숫자와 문자를 제외한 것들 제거 
  if (replace === replace.split('').reverse().join('')) return true; // 위의 결과와 위의 결과의 순서를 뒤집은 값을 비교해서 회문인지 여부를 리턴한다.
  return false; // 회문이 아니면 false
};

LeetCode

Given a string s, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.

Example 1:

1
2
3
4

Input: s = "A man, a plan, a canal: Panama"
Output: true
Explanation: "amanaplanacanalpanama" is a palindrome.

Example 2:

1
2
3
4

Input: s = "race a car"
Output: false
Explanation: "raceacar" is not a palindrome.

Constraints:

1 <= s.length <= 2 * 105 s consists only of printable ASCII characters.

Built with Hugo
Theme Stack designed by Jimmy