[Leetcode] 443. String Compression 解题报告
来源:互联网 发布:linux java 短信猫 编辑:程序博客网 时间:2024/06/04 18:50
题目:
Given an array of characters, compress it in-place.
The length after compression must always be smaller than or equal to the original array.
Every element of the array should be a character (not int) of length 1.
After you are done modifying the input array in-place, return the new length of the array.
Follow up:
Could you solve it using only O(1) extra space?
Example 1:
Input:["a","a","b","b","c","c","c"]Output:Return 6, and the first 6 characters of the input array should be: ["a","2","b","2","c","3"]Explanation:"aa" is replaced by "a2". "bb" is replaced by "b2". "ccc" is replaced by "c3".
Example 2:
Input:["a"]Output:Return 1, and the first 1 characters of the input array should be: ["a"]Explanation:Nothing is replaced.
Example 3:
Input:["a","b","b","b","b","b","b","b","b","b","b","b","b"]Output:Return 4, and the first 4 characters of the input array should be: ["a","b","1","2"].Explanation:Since the character "a" does not repeat, it is not compressed. "bbbbbbbbbbbb" is replaced by "b12".Notice each digit has it's own entry in the array.
Note:
- All characters have an ASCII value in
[35, 126]
. 1 <= len(chars) <= 1000
.
思路:
Easy级别的题目做起来就是爽:遍历数组元素,如果发现和当前元素一样,就增加计数;否则就修改字符串中的元素,并且在个数大于1的时候同时写入计数。值得注意的是在最后还需要检查一下计数是不是大于1,如果大于1则还要额外再写入计数。
代码:
class Solution {public: int compress(vector<char>& chars) { if (chars.size() == 0) { return 0; } char c = chars[0]; int ret = 1, count = 1; for (int i = 1; i < chars.size(); ++i) { if (chars[i] == c) { ++count; } else { if (count > 1) { string s = to_string(count); for (auto ch : s) { chars[ret++] = ch; } } c = chars[i], count = 1; chars[ret++] = c; } } if (count > 1) { string s = to_string(count); for (auto ch : s) { chars[ret++] = ch; } } chars.resize(ret); return ret; }};
阅读全文
0 0
- [Leetcode] 443. String Compression 解题报告
- leetcode 443. String Compression
- [LeetCode] Scramble String 解题报告
- 【LeetCode】Interleaving String 解题报告
- 【LeetCode】Scramble String 解题报告
- [LeetCode] Interleaving String 解题报告
- [LeetCode] Scramble String 解题报告
- 【LeetCode】Reverse String 解题报告
- 【LeetCode】String to Integer (atoi) 解题报告
- LeetCode解题报告--String to Integer (atoi)
- LeetCode-String to Integer (atoi) -解题报告
- [leetcode] 87. Scramble String 解题报告
- [leetcode] 97. Interleaving String 解题报告
- LeetCode(97) Interleaving String解题报告
- [LeetCode] String to Integer (atoi) 解题报告
- [leetcode] 344. Reverse String 解题报告
- 【LeetCode】344. Reverse String 解题报告
- [leetcode] 394. Decode String 解题报告
- 阿里云搭建SS代理超详细教程!!!
- Ryu控制器代码解析-任意地址Ping应答
- uva124
- Android 端天气预报APP的实现(五)全国各地城市数据的获取
- Swift网络请求(Moya篇)
- [Leetcode] 443. String Compression 解题报告
- android sdk 与java jdk之间的对应关系
- 自适应布局小结
- classpath、path、JAVA_HOME的作用及JAVA环境变量配置
- 详解浏览器最大并发连接数
- Insufficient space for shared memory file 磁盘空间不足
- Eclipse快捷键
- android 在module内创建CMakeLists.txt来实现生成多个.so文件
- 递归算法笔记