반응형
문제
Given a string s, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
s 가 palindrome(앞으로 읽어도 거꾸로 읽어도 같은 문자)인지 확인하는 문제입니다. 알파벳만 허용하고 특수문자는 모두 제거해줘야합니다.
예시
풀이
우선 예시 1로 예를 들어보자면 A man, a plan, a canal: Panama 에서 특수기호와 대문자들을 소문자로 모두 바꿔주고 스페이스를 제거해주면 뒤로 읽으나 앞으로 읽으나 같은걸 볼수있습니다.
저희가 string에 적용해줄 4가지입니다.
1. 특수문자 제거(regex활용)
2. 대문자 소문자로 변환(tolowercase)
3. 공백 제거(스페이스 제거) (replace 활용)
4. 거꾸로 뒤집기(reversed())
마지막으로 거꾸로 뒤집은 string은 뒤집기전 String과 비교하여 같으면 true를 리턴하고 다르면 false를 리턴하도록 하겠습니다.
class Solution {
fun isPalindrome(s: String): Boolean{
val regex = Regex("[^A-Za-z0-9]")//Regex를 활용하여 특수문자 없애주기
val result = regex.replace(s, "").toLowerCase() //replace를 활용한 공백 지우기, 그리고 toLowerCase로 decapitalize(소문자화)
result.filter { !it.isWhitespace() } // 공백 지워주기
return result.reversed() == result //거꾸로 뒤집어진 결과가 뒤집기전과 같으면 true
}
}
참고
반응형
'개발공부 > LeetCode' 카테고리의 다른 글
[Kotlin] 선형리스트를 활용한 문제풀이 LeetCode: Delete Node in a Linked List (0) | 2021.07.09 |
---|---|
[Kotlin] indexof 사용법 및 활용 LeetCode: Implement strStr() 쉬운풀이 (0) | 2021.06.26 |
[Kotlin] map, hashmap 같은지 비교하기 LeetCode: Valid Anagram (0) | 2021.06.22 |
[Kotlin] String에서 반복되지않은 char찾기 - LeetCode: First Unique Character in a String (0) | 2021.06.20 |
[Kotlin] LeetCode: PlusOne 쉬운 풀이 해설 (0) | 2021.06.14 |