LeetCode 604. 迭代压缩字符串
文章目录
- 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
长按或扫码关注我的公众号,一起加油、一起学习进步!
LeetCode 604. 迭代压缩字符串相关推荐
- 【LeetCode - 443】压缩字符串(模拟)
解题报告: 直接模拟. class Solution { public:int compress(vector<char>& chars) {int p = 0;for(int i ...
- leetcode初级算法6.字符串转整数(atoi)
leetcode初级算法6.字符串转整数(atoi) 仅为个人刷题记录,不提供解题思路 题解与收获 我的解法: public int myAtoi(String s) {//避免魔法值先设spaceS ...
- 443. 压缩字符串
443. 压缩字符串 给你一个字符数组 chars ,请使用下述算法压缩: 从一个空字符串 s 开始.对于 chars 中的每组 连续重复字符 : 如果这一组长度为 1 ,则将字符追加到 s 中. 否 ...
- LeetCode 583. 两个字符串的删除操作(动态规划)
1. 题目 给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符. 示例: 输入: "sea" ...
- LeetCode 712. 两个字符串的最小ASCII删除和(DP,类似编辑距离)
1. 题目 给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和. 示例 1: 输入: s1 = "sea", s2 = "eat" ...
- Leetcode 712.两个字符串的最小ASCII删除和
Time: 20190906 Type: Medium 题目描述 给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和. 示例 1: 输入: s1 = "sea ...
- C++描述 LeetCode 1768. 交替合并字符串
C++描述 LeetCode 1768. 交替合并字符串 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客,唯 ...
- LeetCode——1888. 使二进制字符串字符交替的最少反转次数(Minimum Number of Flips to Make the Binary ...)[中等]——分析及代码(Java)
LeetCode--1888. 使二进制字符串字符交替的最少反转次数[Minimum Number of Flips to Make the Binary String Alternating][中等 ...
- LeetCode 712. 两个字符串的最小ASCII删除和
LeetCode 712. 两个字符串的最小ASCII删除和 文章目录 LeetCode 712. 两个字符串的最小ASCII删除和 题目描述 一.解题关键词 二.解题报告 1.思路分析 2.时间复杂 ...
最新文章
- MESI缓存一致性协议
- pyinstaller 打包selenium脚本 取消cmd
- 【Android 事件分发】ItemTouchHelper 事件分发源码分析 ( 绑定 RecyclerView )
- android 中的常用组件
- CAS单点登录原理简单介绍
- pta - 1132 Cut Integer
- 玩转算法值面试-第五章 -在链表中穿针引线
- 通过opencv的函数进行图片修复:cv2.inpaint()
- c语言-命令行选项_全国计算机等级考试二级C语言
- mysql 常用命令操作
- 互联网金融数据分析-笔记
- Spring Cloud Zuul 1(API 网关服务)
- 【笔记整理】电磁场复习——麦克斯韦四个方程组
- (Macbook Air)BCM4360网卡Linux(Ubuntu/Fedora)驱动安装总结
- 如何做一个基于微信驾校考试小程序系统毕业设计毕设作品
- 建立一个低成本的工业控制器和树莓Pi 3
- 最接近win7的Linux系统,Windows7Vs.Linux——操作系统大PK
- AccountManager使用教程
- 网管软件在保险行业的应用
- Farey sequences