[leetcode-604-Design Compressed String Iterator]

Posted hellowOOOrld

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[leetcode-604-Design Compressed String Iterator]相关的知识,希望对你有一定的参考价值。

Design and implement a data structure for a compressed string iterator. It should support the following operations: next and hasNext.

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.

next() - if the original string still has uncompressed characters, return the next letter; Otherwise return a white space.
hasNext() - Judge whether there is any letter needs to be uncompressed.

Note:
Please remember to RESET your class variables declared in StringIterator, as static/class variables are persisted across multiple test cases. Please see here for more details.

Example:

StringIterator iterator = new StringIterator("L1e2t1C1o1d1e1");

iterator.next(); // return ‘L‘
iterator.next(); // return ‘e‘
iterator.next(); // return ‘e‘
iterator.next(); // return ‘t‘
iterator.next(); // return ‘C‘
iterator.next(); // return ‘o‘
iterator.next(); // return ‘d‘
iterator.hasNext(); // return true
iterator.next(); // return ‘e‘
iterator.hasNext(); // return false
iterator.next(); // return ‘ ‘

 

思路:

需要注意的是,数字可能是大于10的也就是说不一定是一位数。。。

参考了大神的代码。。

class StringIterator {
  string a;
  size_t i = 0, c = 0;
  char ch;
public:
  StringIterator(string a) {
    this->a = a;
  }

  char next() {
    if (c)
      return c--, ch;
    if (i >= a.size())
      return  ;
    ch = a[i++];
    while (i < a.size() && isdigit(a[i]))
      c = c*10+a[i++]-0;
    c--;
    return ch;
  }

  bool hasNext() {
    return c || i < a.size();
  }
};

参考:

https://leetcode.com/maskray/



以上是关于[leetcode-604-Design Compressed String Iterator]的主要内容,如果未能解决你的问题,请参考以下文章

COMP3004/COMP4105 问题讲解

角度分量内的角度分量? `<comp0><comp1></comp1></comp0>`

COMP2017 COMP9017 设计思想

是否可以使用单个 angular-cli 命令(如 ng generate component comp1、comp2、comp3)生成多个 Angular 组件?

使用 C 将 COMP 和 COMP-3 Packed Decimal 转换为可读值

COMP4318 COMP4318 – Machine Learning