Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- python
- 보안뉴스한줄요약
- 보안뉴스 한줄요약
- 자바스크립트 기본 문법
- 자바스크립트 prototype
- ES6
- Oracle SQL
- 파이썬
- php
- 보안뉴스요약
- 랜섬웨어
- 오라클
- 보안뉴스 요약
- 자바스크립트 jQuery
- 카카오프로젝트100
- 자바스크립트 element api
- 자바스크립트 node
- GIT
- 보안뉴스
- 다크웹
- numpy
- oracle
- 자바스크립트
- javascript
- 카카오프로젝트 100
- 카카오프로젝트
- 자바스크립트 API
- 자바스크립트 객체
- oracle db
- 깃허브
Archives
- Today
- Total
FU11M00N
[LeetCode] Valid Palindrome - Javascript 본문
Valid Palindrome
[Palindrome: 글자를 거꾸로 읽어도 같은 뜻이 되는 문장. Robert Trebor을 글자 단위로 거꾸로 읽어도 Robert Trebor로 읽힌다.]
제약 조건
1 <= s.length <= 2 * 10^5
s consists only of printable ASCII characters.
Example
ex1) Input: s = "A man, a plan, a canal: Panama"
Output: true
Explanation: "amanaplanacanalpanama" is a palindrome.
ex2) Input: s = "race a car"
Output: false
Explanation: "raceacar" is not a palindrome.
ex) Input: s = " "
Output: true
Explanation: s is an empty string "" after removing non-alphanumeric characters.
Since an empty string reads the same forward and backward, it is a palindrome.
접근 방식
두가지의 방법으로 문제를 풀이했다.
1) 자바스크립트의 reverse() 메서드를 활용해 뒤집어진 문자열과 기존의 문자열을 비교해 같은지 비교해 true와 false를 반환했다.
그 과정에서 문자열을 소문자로 변경하고, 정규식을 이용해 영어 알파벳과 숫자가 아니라면 공백으로 치환해 reverse()를 사용했다.
2) 투포인터 방법으로 문자열의 왼쪽과 오른쪽을 좁혀가며 비교해 하나라도 다른 문자열이라면 false를 반환하고 아니라면 true를 반환하는 방식을 사용했다. 확실히 투포인터의 원리에 대한 수업을 듣고 문제에 접근하니 훨씬 쉽게 풀 수 있었다.
이 또한 문자열을 소문자로 변경하고 알파벳과 숫자가 아니라면 정규식 치환을 한 후 비교를 하였다.
투포인터: 두 개의 포인터를 동시에 움직여가며 데이터를 지정
solve 01
/**
* @param {string} s
* @return {boolean}
*/
var isPalindrome = function (s) {
s = s.toLowerCase();
s = s.replace(/[^a-z0-9]/g, '');
let spliteString = s.split('');
var compareString = spliteString.join('');
let reverseArray = spliteString.reverse();
let answer = reverseArray.join('');
if (compareString === answer) {
return true;
} else {
return false;
}
};
solve 02
/**
* @param {string} s
* @return {boolean}
*/
var isPalindrome = function (s) {
s = s.toLowerCase();
s = s.replace(/[^a-z0-9]/g, '');
let left = 0;
let right = s.length - 1;
for (let i = 0; i < s.length; i++) {
if (s[left] === s[right]) {
left++;
right--;
} else {
return false;
}
}
return true;
};
'알고리즘' 카테고리의 다른 글
[LeetCode] Minimum Size Subarray Sum - Javascript (1) | 2023.08.27 |
---|---|
[LeetCode] Two Sum II - Input Array Is Sorted - Javascript (0) | 2023.08.27 |
[LeetCode] Jump Game - Javascript (0) | 2023.08.25 |
[LeetCode] Best Time to Buy and Sell Stock II - Javascript (0) | 2023.08.25 |
[LeetCode] Best Time to Buy and Sell Stock - Javascript (0) | 2023.08.25 |
Comments