String Iterator

String Iterator

题目描述:

要求设计一个字符串迭代类,能够实现next和hasNext两个函数的功能。

例子:

具体描述看LeetCode604

解题思路:

本题中主要用到的函数是istringstream。我们通过将字符串变成字符串流;然后根据>>char>>count这样可以从字符串中读取到字符和对应出现的次数。然后根据题目要求可以很快的实现hasNext和next函数。

代码如下:

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
class StringIterator {
istringstream iss;
int count = 0;
char c = 0;
public:
StringIterator(string compressedString) {
iss = istringstream(compressedString);
}
char next() {
if (hasNext()){
count--;
return c;
}else{
return ' ';
}
}
bool hasNext() {
if (count == 0)
iss >> c >> count;
return count > 0;
}
};
/**
* Your StringIterator object will be instantiated and called as such:
* StringIterator obj = new StringIterator(compressedString);
* char param_1 = obj.next();
* bool param_2 = obj.hasNext();
*/