《程序员面试金典》基本字符串压缩
2015-09-16 15:22
429 查看
【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题目链接:http://www.nowcoder.com/practice/21f3a84300c94db092e0b5a7bf2d0ad1?rp=1&ru=/ta/cracking-the-coding-interview&qru=/ta/cracking-the-coding-interview/question-ranking
题目描述
利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。
给定一个string iniString为待压缩的串(长度小于等于3000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。
测试样例
"aabcccccaaa"
返回:"a2b1c5a3"
"welcometonowcoderrrrr"
返回:"welcometonowcoderrrrr"
思路
新建一个字符串用于保存压缩之后的字符串,最后将得到的字符串与原串相比,取长度小的那一串
题目链接:http://www.nowcoder.com/practice/21f3a84300c94db092e0b5a7bf2d0ad1?rp=1&ru=/ta/cracking-the-coding-interview&qru=/ta/cracking-the-coding-interview/question-ranking
题目描述
利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。
给定一个string iniString为待压缩的串(长度小于等于3000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。
测试样例
"aabcccccaaa"
返回:"a2b1c5a3"
"welcometonowcoderrrrr"
返回:"welcometonowcoderrrrr"
思路
新建一个字符串用于保存压缩之后的字符串,最后将得到的字符串与原串相比,取长度小的那一串
class Zipper { public: string zipString(string iniString) { // write code here if(iniString=="") return iniString; int length = iniString.length(); string outString = ""; string num; char ch = iniString[0]; int cnt = 1; for(int i = 1; i<length; i++) { if(iniString[i]==ch) { cnt++; } else { num = to_string(cnt); outString += ch; outString += num; ch = iniString[i]; cnt = 1; } } num = to_string(cnt); outString += ch; outString += num; if(outString.length() >= iniString.length()) return iniString; return outString; } };
相关文章推荐
- .net 初中级程序员招聘
- 《程序员面试金典》空格替换
- 程序员:你的代码为谁而写
- 面试专用:JSP的九大内置对象和四大作用域
- 【面试季二】前端性能优化
- 《黑马程序员》Java面向对象
- 中兴面试2016 软件开发
- 《招聘一个靠谱的iOS》面试题参考答案
- 程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列集锦
- 游戏面试题:struct与class的区别
- 高效程序员的45个习惯
- 面试题_HashTable和HashMap的区别
- sql面试题详解
- 《黑马程序员》Java多线程
- 程序员平时该问问自己的10个问题
- 我是程序员,加班就是我活该吗?
- 19岁程序员在谷歌学到的5条经验教训
- 盘点十大提供最好面试体验的科技公司
- Java面试题总结 from Baidu 网易 阿里
- 程序员面试笔试题目-素数、atoi、itoa、strstr、strcpy以及两个数交换(一)