将字符串中相邻相同的子串合并为一个子串
来源:互联网 发布:软件代替身份证读卡器 编辑:程序博客网 时间:2024/06/06 05:36
/***** 问题描述:将字符串中相邻相同的子串合并为一个子串,如"12342343454565678789" -- "123456789"***/#include <iostream>#include <string>using namespace std;void Unite_Str(string s)//合并函数{string st(10,0);//st用于保存合并之后的串,长度固定为10,//不过这边用自动增长的类型比较好unsigned int i=0,j=0,cur_index=0;//cur_index为当前在字符串的位置,i用于保存相同字符的偏移量unsigned int t=0;//用于存储st串时用st[t]=s[cur_index];//第一个字符++cur_index; ++t;while(cur_index<s.size()){j=0;while(j<st.size() && cur_index<s.size()){if(st[j]==s[cur_index])for(unsigned int n=0;cur_index+n<s.size();++n){//向前寻找相同字符if(st[j+n]==s[cur_index+n]){cur_index++;//略过相同的部分continue;}else{i=n;//i取得相同部分的字符个数,不过好像这个没什么用…在这里break;}//if}//forelse ++j;if(i!=0) break;//如果偏移量不为0结束循环}//whileif(0==i && cur_index<s.size()) {//置入下个字符st[t++]=s[cur_index];cur_index++;continue;}else{i=0;//重置偏移量为0}//if}//whilecout<<"合并之前为:"<<s<<endl;cout<<"合并之后为:"<<st<<endl;}void main(){string sm;cout<<"请输入一个待合并串:"<<endl;cin>>sm;Unite_Str(sm);}
写得不好,不过总算是解决了问题,接下去要改进下程序…
- 将字符串中相邻相同的子串合并为一个子串
- 找出一个字符串中最长连续相同子串
- 将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换为t2所指字符串
- 两个字符串中最大相同子串
- 查找一个字符串中两个相同的最大的子串
- spoj 694 求一个字符串中不相同子串的个数
- 字符串中相同的且长度最长的子串
- 找出字符串中,指定的相同子串的数量
- 两个字符串中最大相同的子串
- 获取两个字符串中最大的相同子串
- 两个字符串中最大相同的子串
- 获取两个字符串中最大相同子串的实现
- 相邻字符串被合并为一个字符串
- 判断一个字符串是否为另一个字符串的子串
- java获取两个字符串中最大相同子串。第一个动作:将短的那个串进行长度一次递减的子串打印
- 合并字符串中所有的子字符串
- 判断一个字符串中所有子串是否为回文子串
- 检查一个单词是否为其他字符串的子串
- 《笨办法学 Python》 学习笔记03 —— Function、List、Dist
- (Effective C++)第三章 资源管理(Resource Management)
- 下载旧的debian版本(jigdo下载)
- 从 C++ 到Objective-C
- MDK出现 access violation at 0x***: no 'write' permission之解决办法
- 将字符串中相邻相同的子串合并为一个子串
- getField getDeclaredField
- GNU C中不为人知的特色:__attribute__机制
- 正则表达式学习笔记3
- 《linux内核设计与实现》Chapter6中断和中断处理程序(笔记)
- Java各种类中的一些方法
- Linux下运行C++程序产生“段错误”的原因及其解决办法
- 编写苹果游戏中心应用程序(翻译 1.3 为iOS应用程序设置游戏中心)
- 机器数与数值