LeetCode 604. 迭代压缩字符串

    技术2023-08-24  89

    文章目录

    1. 题目2. 解题

    1. 题目

    对于一个压缩字符串,设计一个数据结构,它支持如下两种操作: next 和 hasNext。

    给定的压缩字符串格式为:每个字母后面紧跟一个正整数,这个整数表示该字母在解压后的字符串里连续出现的次数。

    next() - 如果压缩字符串仍然有字母未被解压,则返回下一个字母,否则返回一个空格。hasNext() - 判断是否还有字母仍然没被解压。

    注意: 请记得将你的类在 StringIterator 中 初始化 ,因为静态变量或类变量在多组测试数据中不会被自动清空。更多细节请访问 这里 。

    示例: StringIterator iterator = new StringIterator("L1e2t1C1o1d1e1"); iterator.next(); // 返回 'L' iterator.next(); // 返回 'e' iterator.next(); // 返回 'e' iterator.next(); // 返回 't' iterator.next(); // 返回 'C' iterator.next(); // 返回 'o' iterator.next(); // 返回 'd' iterator.hasNext(); // 返回 true iterator.next(); // 返回 'e' iterator.hasNext(); // 返回 false iterator.next(); // 返回 ' ' 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/design-compressed-string-iterator 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    2. 解题

    class StringIterator { string s; char cur; int count = 0, idx = 0; public: StringIterator(string compressedString) { s = compressedString; } char next() { if(!hasNext()) return ' '; if(count>0) { count--; return cur; } else//count=0 { cur = s[idx]; idx++; while(idx < s.size() && isdigit(s[idx])) count = count*10+(s[idx++]-'0'); count--;//用掉了一个 return cur; } } bool hasNext() { return idx < s.size()||count; } };

    20 ms 13.3 MB


    长按或扫码关注我的公众号,一起加油、一起学习进步!

    Processed: 0.010, SQL: 10