Skip to content

[Leetcode] 704. Make The String Great

#문자열

Problem

문제 링크

문자열이 주어질때 서로 인접한 문자가 대문자와 소문자이면서 같은 알파벳이면 제거하면서 최종 문자열을 출력하는 문제

ex) leEeetcode => leetcode ex) abBAcC => "" ex) "kkdsFuqUfSDKK" => "kkdsFuqUfSDKK"

Solution

  1. 문자열을 순회가능하게 만든다.
  2. 가산기를 이용하여 문자열을 생성한다.
    • 주어진 c와 가산기의 마지막 문자가 서로 대소문자인지 조건을 통해 구별한다.
    • 같은 알파벳인지 확인한다.
  3. 위 조건에 일치하면 가산기의 마지막 문자를 제거한다.
  4. 위 조건에 일치하지않으면 가산기에 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
  })
}