基本字符串压缩(程序员面试金典+string)字符串操作
2015-09-22 15:23
239 查看
基本字符串压缩
参与人数:1661时间限制:3秒空间限制:32768K
通过比例:15.52%
最佳记录:0 ms|0K(来自 牛客游客)
利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。
给定一个string iniString为待压缩的串(长度小于等于3000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。
测试样例
题目链接:http://www.nowcoder.com/practice/21f3a84300c94db092e0b5a7bf2d0ad1?rp=1&ru=/ta/cracking-the-coding-interview&qru=/ta/cracking-the-coding-interview/question-ranking
题意很简单但要理解透彻,我一开始就想错了,,,看测试数据有时候还是挺管用的;
这题主要是string的操作,主要是数字转字符串的操作,类似于java中的to_string()操作,我模拟了下。可能不是最优解。但复杂度是O(n) 应该可以接受
参与人数:1661时间限制:3秒空间限制:32768K
通过比例:15.52%
最佳记录:0 ms|0K(来自 牛客游客)
题目描述
利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“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
题意很简单但要理解透彻,我一开始就想错了,,,看测试数据有时候还是挺管用的;
这题主要是string的操作,主要是数字转字符串的操作,类似于java中的to_string()操作,我模拟了下。可能不是最优解。但复杂度是O(n) 应该可以接受
#include<stdio.h> #include<string> using namespace std; class Zipper { public: string zipString(string iniString) { // write code here string st=""; if(iniString.size()==0) return st; st+=iniString[0]; int cnt=1; for(int i=1;i<iniString.size();i++) { if(iniString[i]!=iniString[i-1]) { st+=to_string(cnt)+iniString[i]; cnt=0; } cnt++; } st+=to_string(cnt); if(st.size()>=iniString.size()) return iniString; else return st; } string to_string(int n) { int a[30],cnt=0; string s=""; while(n) { a[cnt++]=n%10; n/=10; } for(int i=cnt-1;i>=0;i--) { s+=('0'+a[i]); } return s; } }; int main() { Zipper zi; string s="aabcccccaaa"; s=zi.zipString(s); for(int i=0;i<s.size();i++) printf("%c",s[i]); puts(""); string ss="welcometonowcoderrrrr"; ss=zi.zipString(ss); for(int i=0;i<ss.size();i++) printf("%c",ss[i]); puts(""); return 0; }
相关文章推荐
- 大众点评校招内推面试经历-测试开发岗位
- 给IT新人的15点建议:苦逼程序员的辛酸反省与总结
- 经营成功的测试职业生涯
- 单链表面试题
- 黑马程序员——IOS学习笔记(协议和分类)
- 不再做浮躁的程序员
- 程序员挑战高薪,你必须会的十大面试题
- 百度、腾讯面试题
- ym——Andorid-15k+的面试题。
- 黑马程序员——异常处理全过程:不怕一万,就怕万一
- C# 程序员最常犯的 10 个错误
- 面试---阿拉伯数字金额转汉字
- 黑马程序员——IOS学习笔记(类和对象)
- JAVA面试题
- PHP面试总结
- 百度校招面试经历及总结(已发offer)
- 2015-9月份,Android开发,面试题总结,主要记录没有答出来的问题
- PHP面试总结
- 面试---不增加变量,交换两个数值变量的值
- 你需要了解的 Chrome 45 的改变-兄弟连IT教育