Leetcode - 125. Valid Palindrome (JS, Easy)

μ§„μ˜Β·2024λ…„ 5μ›” 6일
0

LeetCode

λͺ©λ‘ 보기
14/16

125. Valid Palindrome

문제

πŸ’¬ μ„€λͺ…

ꡬ(phrase)λ₯Ό 거꾸둜 읽어도 μ œλŒ€λ‘œ 읽은 것과 같은걸 회문(palindrome)이라 ν•œλ‹€.
이 λ¬Έμ œλŠ” μ–΄λ– ν•œ ꡬ가 주어지면 κ·Έ ꡬ가 νšŒλ¬ΈμΈμ§€ μ•„λ‹Œμ§€λ₯Ό νŒλ³„ν•˜λ©΄ λ˜λŠ” λ¬Έμ œλ‹€.


πŸ“œ 풀이

/**
 * @param {string} s
 * @return {boolean}
 */
var isPalindrome = function(s) {
    let reg = /[^a-zA-Z|0-9]/gim;
    s = s.replace(reg, '').toLowerCase();
    
    let l = 0, r = s.length - 1;
    
    while(l < r){
        if(s[l] !== s[r]) return false;
        l++; r--;
    }
    
    return true;
};

κ΅¬μ—μ„œ λΆˆν•„μš”ν•œ νŠΉμˆ˜λ¬Έμžλ‚˜ 곡백을 μ§€μš°κ³  λͺ¨λ“  문자λ₯Ό μ†Œλ¬Έμžλ‘œ λ°”κΏ”μ„œ μ•žλ’€λ‘œ μ„œλ‘œ 같은지 νŒλ³„ν•˜λ©΄ λœλ‹€.
/[^a-zA-Z|0-9]/gim λŠ” 영문, 숫자λ₯Ό μ œμ™Έν•œ λͺ¨λ“  문자λ₯Ό μ°ΎλŠ” μ •κ·œμ‹μ΄λ‹€.



πŸ”Ž νŒ¨ν„΄

λ§€μΉ­ν•˜μ—¬ κ²€μƒ‰ν•˜κ³  싢은 λ¬Έμžμ—΄μ„ μ§€μ •ν•œλ‹€.
기쑴처럼 λ¬Έμžμ—΄μ˜ λ”°μ˜΄ν‘œλ₯Ό ν¬ν•¨ν•΄μ„œ μ„ μ–Έν•˜λ©΄ λ”°μ˜΄ν‘œκΉŒμ§€λ„ κ²€μƒ‰ν•˜κΈ° λ•Œλ¬Έμ— λ”°μ˜΄ν‘œλŠ” μƒλž΅ν•œλ‹€.

μ •κ·œ ν‘œν˜„μ‹ νŒ¨ν„΄μ„ μž‘μ„±ν•  λ•ŒλŠ” 일반 λ¬Έμžμ™€ 특수 문자λ₯Ό μ‚¬μš©ν•  수 μžˆλŠ”λ°,
일반 λ¬ΈμžλŠ” λ¦¬ν„°λŸ΄ 문자 / 특수 λ¬ΈμžλŠ” 메타 문자둜 ν‘œν˜„ν•œλ‹€.

λ¦¬ν„°λŸ΄ 문자 (μ •κ·œ 문자) : 일반 문자, \0, \n, \t, \v, \f, \r, \xhh, \uhhhh, \cX
메타 문자 (μ •κ·œ ν‘œν˜„μ‹μ˜ ꡬ문 문자) : ^ $ \ . * + ? ( ) [ ] { } |_

πŸ”Ž ν”Œλž˜κ·Έ

ν”Œλž˜κ·ΈλŠ” μ •κ·œ ν‘œν˜„μ‹μ˜ μ˜΅μ…˜μ΄λ―€λ‘œ μ„ νƒμ μœΌλ‘œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.
μˆœμ„œμ™€ 상관없이 ν•˜λ‚˜ μ΄μƒμ˜ ν”Œλž˜κ·Έλ₯Ό λ™μ‹œμ— μ„€μ •ν•  수 μžˆλ‹€.
ν”Œλž˜κ·Έλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ—λŠ” λ¬Έμžμ—΄ λ‚΄ 검색 λŒ€μƒμ΄ 1개 이상이더라도 첫번째 쑰건 λŒ€μƒλ§Œμ„ κ²€μƒ‰ν•˜κ³  μ’…λ£Œν•˜κ²Œ λœλ‹€.

🚩 λŒ€ν‘œμ μΈ ν”Œλž˜κ·Έ
i (ignore case) : λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λ³„ν•˜μ§€ μ•Šκ³  κ²€μƒ‰ν•œλ‹€.
g (global) : λ¬Έμžμ—΄ λ‚΄μ˜ λͺ¨λ“  νŒ¨ν„΄μ„ κ²€μƒ‰ν•œλ‹€.
m (multi line) : λ¬Έμžμ—΄μ˜ 행이 λ°”λ€Œλ”λΌλ„ 검색은 κ³„μ†ν•œλ‹€.

πŸ”— References

Javascriptμ—μ„œ μ •κ·œν‘œν˜„μ‹(Regular Expression) μ‚¬μš©ν•˜κΈ°

profile
κ°œλ°œν•˜κ³  λ§Œλ“œλŠ”κ±Έ μ’‹μ•„ν•©λ‹ˆλ‹€

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보