ꡬ(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) : λ¬Έμμ΄μ νμ΄ λ°λλλΌλ κ²μμ κ³μνλ€.
Javascriptμμ μ κ·ννμ(Regular Expression) μ¬μ©νκΈ°