> For the complete documentation index, see [llms.txt](https://jaywin.gitbook.io/leetcode/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jaywin.gitbook.io/leetcode/solutions/0604-design-compressed-string-iterator.md).

# 0604. Design Compressed String Iterator

<https://leetcode.com/problems/design-compressed-string-iterator>

## Description

Design and implement a data structure for a compressed string iterator. The given compressed string will be in the form of each letter followed by a positive integer representing the number of this letter existing in the original uncompressed string.

Implement the StringIterator class:

* `next()` Returns **the next character** if the original string still has uncompressed characters, otherwise returns a **white space**.
* `hasNext()` Returns true if there is any letter needs to be uncompressed in the original string, otherwise returns `false`.

**Example 1:**

```
**Input**
["StringIterator", "next", "next", "next", "next", "next", "next", "hasNext", "next", "hasNext"]
[["L1e2t1C1o1d1e1"], [], [], [], [], [], [], [], [], []]
**Output**
[null, "L", "e", "e", "t", "C", "o", true, "d", true]
**Explanation**
StringIterator stringIterator = new StringIterator("L1e2t1C1o1d1e1");
stringIterator.next(); // return "L"
stringIterator.next(); // return "e"
stringIterator.next(); // return "e"
stringIterator.next(); // return "t"
stringIterator.next(); // return "C"
stringIterator.next(); // return "o"
stringIterator.hasNext(); // return True
stringIterator.next(); // return "d"
stringIterator.hasNext(); // return True
```

**Constraints:**

* `1 <= compressedString.length <= 1000`
* `compressedString` consists of lower-case an upper-case English letters and digits.
* The number of a single character repetitions in `compressedString` is in the range `[1, 10^9]`
* At most `100` calls will be made to `next` and `hasNext`.

## ac

```java
```
