Design Compressed String Iterator
设计一个runlength压缩后的string的iterator.
class StringIterator {
public:
deque<char> v;
deque<int> c;
StringIterator(string cs) {
for(int i = 0; i < cs.length();) {
if(i < cs.length() && '0' <= cs[i] && cs[i] <= '9'){
int count = 0;
while(i < cs.length() && '0' <= cs[i] && cs[i] <= '9'){
count = (count * 10) + (cs[i] - '0');
i++;
}
c.push_back(count);
}else{
v.push_back(cs[i++]);
}
}
}
char next() {
if(!hasNext())
return ' ';
c[0]--;
char vv = v.front();
if(c[0] == 0){
c.pop_front();
v.pop_front();
}
return vv;
}
bool hasNext() {
return c.size() != 0 && v.size() != 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();
*/