๐Ÿ“– Valid Palindrome

๐Ÿ“–What I thought

  1. ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์•ˆ ํ•ด โ†’ ๋‹ค ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊พธ๊ธฐ โ†’ lower()
  2. ์˜๋ฌธ์ž์™€ ์ˆซ์ž๋งŒ ์ทจ๊ธ‰ โ†’ ๊ณต๋ฐฑ ํฌํ•จ ๊ธฐํ˜ธ ๋‹ค ์ œ๊ฑฐ โ†’ ์ •๊ทœํ‘œํ˜„์‹์œผ๋กœ ์˜๋ฌธ์ž + ์ˆซ์ž๋งŒ ๋‚จ๊ธฐ์ž โ†’ re.sub()
  3. ์ด๋ ‡๊ฒŒ ๋‹ค ์ •๋ฆฌ๋œ ๋ฌธ์ž์—ด์ด ๋’ค์ง‘์€ ๋ฌธ์ž์—ด์ด๋ž‘ ๋˜‘๊ฐ™์œผ๋ฉด True โ†’ sequence slicing

๐Ÿ“–ํ’€์ด

๐Ÿ“Žre.sub()

def isPalindrome(self, s: str) -> bool:
    s = s.lower()
    s = re.sub('[^a-z0-9]', '', s)
    
    return s == s[::-1]

๐Ÿ“–What I learned

  1. ์ •๊ทœํ‘œํ˜„์‹ ํ‘œํ˜„๋“ค์„ ์ž˜ ์•Œ์•„๋‘์ž!!

    ๐Ÿ“Ž re.sub(pattern, replace, str, cnt)

    ๋ฌธ์ž์—ด์—์„œ ์ •๊ทœ ํ‘œํ˜„์‹ ํŒจํ„ด์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ์น˜ํ™˜ํ•˜๋Š” ์ •๊ทœ ํ‘œํ˜„์‹ ํ•จ์ˆ˜

    ๋‹ค์–‘ํ•œ ์ •๊ทœ ํ‘œํ˜„์‹ ํŒจํ„ด ํ‘œํ˜„

    ํŒจํ„ด์„ค๋ช…
    ^์ด ํŒจํ„ด์œผ๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•จ
    $์ด ํŒจํ„ด์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•จ
    [chars]๋ฌธ์ž๋“ค ์ค‘ ํ•˜๋‚˜์—ฌ์•ผ ํ•จ
    ๊ฐ€๋Šฅํ•œ ๋ฌธ์ž๋“ค์˜ ์ง‘ํ•ฉ์„ ์ •์˜
    [^chars]์•„๋‹ˆ์–ด์•ผ ํ•  ๋ฌธ์ž๋“ค์˜ ์ง‘ํ•ฉ์„ ์ •์˜
    [a-d]ํ•ด๋‹น ๋ฌธ์ž ์‚ฌ์ด ๋ฒ”์œ„์— ์†ํ•˜๋Š” ๋ฌธ์ž๋“ค์˜ ์ง‘ํ•ฉ์„ ์ •์˜
    [^a-d]ํ•ด๋‹น ๋ฌธ์ž ์‚ฌ์ด ๋ฒ”์œ„์— ์†ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ž๋“ค์˜ ์ง‘ํ•ฉ์„ ์ •์˜
    Link to original

๐Ÿ“–๊ด€๋ จ ์ง€์‹

๐Ÿ“ŽSequence Slicing

๐Ÿ“Žre.sub()