程序员面试金典第一章:数组与字符串(5) 基本字符串压缩
来源:互联网 发布:网络运维主要做什么 编辑:程序博客网 时间:2024/04/30 16:18
1.1 题目描述
利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。
给定一个string iniString为待压缩的串(长度小于等于10000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。
测试样例"aabcccccaaa"返回:"a2b1c5a3""welcometonowcoderrrrr"返回:"welcometonowcoderrrrr"
1.2解题思路
思路1:声明一个新的字符串s2, 遍历iniString,对每一个字符保存一次,并且记录这个字符的个数,遍历iniString,直到最后时间复杂度O(n),空间复杂度O(1)
class Zipper {public: string zipString(string iniString) { // write code here if(iniString.size() <= 1) return iniString; string res = ""; char tmp = iniString[0]; int tmpCount = 1; int stringIndex = 1; while(stringIndex < iniString.size()) { if(iniString[stringIndex] == tmp) { ++tmpCount; } else { res += tmp; stringstream ss; string str; ss<<tmpCount; ss>>str; res += str; tmp = iniString[stringIndex]; tmpCount = 1; } ++stringIndex; } res += tmp; stringstream ss; string str; ss<<tmpCount; ss>>str; res += str; if(res.size() >= iniString.size()) return iniString; else return res; }};
tips: 1.当iniString长度小于1的时候,直接返回
2.不要忘记最后一组
0 0
- 程序员面试金典第一章:数组与字符串(5) 基本字符串压缩
- 《程序员面试金典》--基本字符串压缩
- 《程序员面试金典》基本字符串压缩
- 【程序员面试金典】基本字符串压缩
- 程序员面试金典: 9.1数组与字符串 5字符串压缩
- 程序员面试金典(5):基本字符串压缩(python)
- 程序员面试金典第一章:数组与字符串(1) 确定字符互异
- 程序员面试金典第一章:数组与字符串(2) 原串翻转
- 程序员面试金典第一章:数组与字符串(3) 确定两串乱序同构
- 程序员面试金典第一章:数组与字符串(4) 空格替换
- 程序员面试金典第一章:数组与字符串(6) 像素翻转
- 程序员面试金典第一章:数组与字符串(7)清除行列
- 程序员面试金典第一章:数组与字符串(8) 翻转子串
- 基本字符串压缩(程序员面试金典+string)字符串操作
- 【程序员面试金典】数组与字符串
- 程序员面试金典 1.5 基本字符串压缩
- 程序员面试金典题解 基本字符串压缩
- 程序员面试金典——基本字符串压缩
- centos 7 lvs 负载均衡搭建
- xx-net 的下载和安装,mac系统的安装
- eclipse ADT重写方法时解决参数arg0, arg1可读性
- Centos 7 伪分布式安装Hadoop2.6和Hbase0.94
- shopnc nodejs安装
- 程序员面试金典第一章:数组与字符串(5) 基本字符串压缩
- php中curl的详细解说
- mysql 5.7 忘记root密码解决办法
- pthread线程
- android开发总结
- 我的2016——培训、工作,回首大学
- Android 错误总结
- 微信小程序< 2 > ~ 微信小程序之头条新闻
- 当前的信息孤岛为什么是不治之症