• [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/

  • 相关阅读:
    JS
    JS
    JS
    VUE
    element-ui 进入页面 message 自动触发的问题
    JS-数组中常用的方法
    CSS-transition简单过渡动画
    vue
    JS
    2021要买的书籍
  • 原文地址:https://www.cnblogs.com/hellowooorld/p/6984798.html
Copyright © 2020-2023  润新知