[Leetcode] 704. Make The String Great
#문자열
Problem
문자열이 주어질때 서로 인접한 문자가 대문자와 소문자이면서 같은 알파벳이면 제거하면서 최종 문자열을 출력하는 문제
ex) leEeetcode => leetcode ex) abBAcC => "" ex) "kkdsFuqUfSDKK" => "kkdsFuqUfSDKK"
Solution
- 문자열을 순회가능하게 만든다.
- 가산기를 이용하여 문자열을 생성한다.
- 주어진 c와 가산기의 마지막 문자가 서로 대소문자인지 조건을 통해 구별한다.
- 같은 알파벳인지 확인한다.
- 위 조건에 일치하면 가산기의 마지막 문자를 제거한다.
- 위 조건에 일치하지않으면 가산기에 c(문자)를 추가한다.
TS Code
ts
function makeGood(s: string): string {
const isUpperCase = (c: string) => c === c.toUpperCase()
const isLowerCase = (c: string) => c === c.toLowerCase()
return Array.from(s).reduce((acc: string, c: string, i: number) => {
const lastChar = acc[acc.length - 1]
if (!acc) return c
if (((isUpperCase(lastChar) && isLowerCase(c)) || (isUpperCase(c) && isLowerCase(lastChar))) && c.toUpperCase() === lastChar.toUpperCase()) return acc.slice(0, -1)
return acc + c
})
}