程序员面试金典: 9.1数组与字符串 5字符串压缩
来源:互联网 发布:如何在淘宝买好货 编辑:程序博客网 时间:2024/04/30 22:09
#include <iostream>#include <stdio.h>#include <string>#include <sstream>using namespace std;/*问题:利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。 比如,字符串aabcccccaaa会变为a2b1c5a3.若“压缩”后的字符串没有变短, 则返回原先的字符串。分析:本质上就是寻找相邻相同字母的问题。当相邻两个字符不同时,开始重新计数 从后向前, 暴力破解来做输入:aabcccccaaammamm输出:a2b1c5a3mmamm关键:1 本质前后寻找一段连续相同字母的首标和末标,注意对最后一段相同字母处理*/string stringCompress(const string& str){if(str.empty()){return str;}int length = str.length();stringstream sResult;//只有一个字符,直接返回该字符串if(length == 1){return str;}int begin = 0;int end = begin + 1;while(end < length){//如果前后相邻部分相同,继续寻找下标if( str[begin] == str[end] ){end++;continue;}//如果前后相邻部分不同,则需要,设定当前字符的截止下标为end-1,并重新设置下一处字符起始下标为endelse{end = end - 1;int iLen = end - begin + 1;sResult << str[begin] << iLen;begin = end + 1;end = begin + 1;}}//对最后一个end进行处理end = end - 1;int iLen = end - begin + 1;sResult << str[begin] << iLen;if(sResult.str().length() < str.length()){return sResult.str();}else{return str;}}int main(int argc,char* argv[]){string str;while(cin >> str){string sResult = stringCompress(str);cout << sResult << endl;}system("pause");return 0;}
0 0
- 程序员面试金典: 9.1数组与字符串 5字符串压缩
- 程序员面试金典第一章:数组与字符串(5) 基本字符串压缩
- 【程序员面试金典】数组与字符串
- 《程序员面试金典》之压缩字符串
- 《程序员面试金典》--基本字符串压缩
- 《程序员面试金典》基本字符串压缩
- 【程序员面试金典】基本字符串压缩
- 程序员面试金典: 9.1数组与字符串 1判断字符串所有字符全都不同
- 程序员面试金典: 9.1数组与字符串 2写翻转字符串函数reverse(char* str)
- 程序员面试金典: 9.1数组与字符串 4字符串中空格全部替换为"%20"
- 程序员面试金典(5):基本字符串压缩(python)
- 程序员面试金典-数组和字符串
- 程序员面试金典: 9.1数组与字符串 6将图像旋转90度
- 程序员面试金典: 9.1数组与字符串 8判断两个字符串中一个字符串是否由另一个字符串旋转而成
- 程序员面试金典1.5:实现字符串的压缩功能
- 程序员面试金典 1.5 基本字符串压缩
- 程序员面试金典题解 基本字符串压缩
- 程序员面试金典——基本字符串压缩
- 《黄金时代-王小波》
- 哪个更快:Java堆还是本地内存
- java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
- edx 属性的获取
- python 读写文件
- 程序员面试金典: 9.1数组与字符串 5字符串压缩
- 第十五周-OJ-C字符串逆序输出
- perl 单引号解析
- codeforces 749C Voting
- js给每个li绑定不同事件(事件委托技术)
- FZU 1686神龙的难题(DLX可重复覆盖)
- 程序员苹果电脑使用入门
- git的使用知识点总结(二)
- Java中分割字符串