티스토리 뷰

 아래와 같이 문자 다음 숫자로 이루어진 일종의 encoded string이 주어지고, 이에 따라 next()와 hasNext() 함수를 구현하는 문제다. next()와 hasNext() 함수를 구현하는 문제는 많이 출제되는 유형 중 하나다.

 

Input:
["StringIterator", "next", "next", "next", "next", "next", "next", "hasNext", "next", "hasNext"]
[["L1e2t1C1o1d1e1"], [], [], [], [], [], [], [], [], []]

 

Output:
[null, "L", "e", "e", "t", "C", "o", true, "d", true]

 

class StringIterator:

    def __init__(self, compressedString: str):
        self.s = compressedString
        self.q = deque()
        i = 0
        while i < len(self.s):
            n = ''
            if self.s[i].isalpha():
                a = self.s[i]
                i += 1
            while i < len(self.s) and self.s[i].isdigit():
                n += self.s[i]
                i += 1
            self.q.append([a, int(n)])
             
    def next(self) -> str:
        if self.q:
            ret = self.q[0][0]
            self.q[0][1] -= 1
            if self.q[0][1] == 0:
                self.q.popleft()
            return ret
        return ' '

    def hasNext(self) -> bool:
        if self.q:
            return True
        return False

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함
반응형