[알고리즘 스터디] Valid Palindrome

박봉팔·2024년 5월 29일
post-thumbnail

알고리즘 스터디 2주차

알고리즘 스터디 2주차부터는 책을 정해서, 책의 내용을 따라가며 문제풀이와 기본다지기를 하기로 했다.

앞으로 알고리즘 스터디는 자바 알고리즘 인터뷰 with 코틀린에 나온 목차대로 문제를 풀기로 했다.


LeetCode - 125. Valid Palindrome

[LeetCode - 125. Valid Palindrome]

입력된 문장이 팰린드롬인지 확인하기 위한 코드를 작성해야한다.

특수 문자와 공백을 제거한 알파벳과 숫자로만 이루어진 문자를 거꾸로 뒤집어도 똑같은지 비교하는 문제이다.


class Solution {
    fun isPalindrome(s: String): Boolean {
        val origin = s.filter{it.isLetterOrDigit()}.lowercase()
        val reverse = origin.reversed()

        return origin == reverse  
    }
}

filter함수를 통해 특수 문자와 공백을 제거한뒤 lowercase()를 통해 소문자로 변환한 문자열을 reversed()를 통해 거꾸로 뒤집은 순서와 비교한 값을 return한다.


isLetter(), isLetterOrDigit(), isDigit()

Char타입의 확장함수로 해당 값이 문자인지, 혹은 숫자인지 확인해 Boolean값을 반환한다.

  • isLetter() : 해당값이 오직 문자인 경우에만 true를 반환한다. 공백이나 특수문자의 경우 false
    (영문 뿐만 아니라 다른 언어값도 문자일경우 true)

  • isDigit() : 해당값이 0 ~ 9사이일 경우 true를 반환한다. Digit은 숫자 자릿수를 나타내는 형식으로, 정수형 데이터 타입이 아닌 0 ~ 9의 각 문자를 나타낸다.
    ("1578"의 경우 각각 '1', '5', '7', '8' 4개의 Digit을 가지고 있다.)

  • isLetterOrDigit() : 값이 LetterDigit인 경우에만 true를 반환한다.


reversed()

문자열은 Char값들의 집합이기때문에 reversed()를 사용해 간단히 순서를 거꾸로 뒤집을 수 있다.

profile
개발 첫걸음! 가보자구!

0개의 댓글