Palindrome
- 거꾸로 읽어도 제대로 읽은 것과 같은 문장을 의미한다.
- ex) "bcacb", "abba"
- Palindrome의 길이는 홀수, 짝수 모두 가능하며 홀수인 경우 정 가운데의 문자는 어느 것이든 상관없다는 특징이 있다.
class Solution {
fun longestPalindrome(s: String): Int {
val letterMap = mutableMapOf<Char, Int>()
for (letter in s) {
var value = letterMap[letter]
value = value ?: 0
letterMap[letter] = value + 1
}
var length = 0
var hasOdd = false
for ((key, value) in letterMap) {
if (value and 1 == 0)
length += value
if (value and 1 == 1) {
hasOdd = true
length += (value - 1)
}
}
if (hasOdd)
length++
return length
}
}
시간복잡도 : O(N)
공간복잡도 : O(N)
class Solution {
fun longestPalindrome(s: String): Int {
val hashSet = hashSetOf<Char>()
var count = 0
for (letter in s) {
if (hashSet.contains(letter)) {
count++
hashSet.remove(letter)
} else {
hashSet.add(letter)
}
}
if (!hashSet.isEmpty()) count = count * 2 + 1
else count = count * 2
return count
}
}
시간복잡도 : O(N)
공간복잡도 : O(N)