将字符串中相邻相同的子串合并为一个子串
2011-10-15 19:59
417 查看
/* ** ** 问题描述:将字符串中相邻相同的子串合并为一个子串,如"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 }//for else ++j; if(i!=0) break; //如果偏移量不为0结束循环 }//while if(0==i && cur_index<s.size()) { //置入下个字符 st[t++]=s[cur_index]; cur_index++; continue; } else { i=0; //重置偏移量为0 }//if }//while cout<<"合并之前为:"<<s<<endl; cout<<"合并之后为:"<<st<<endl; } void main() { string sm; cout<<"请输入一个待合并串:"<<endl; cin>>sm; Unite_Str(sm); }
写得不好,不过总算是解决了问题,接下去要改进下程序…
相关文章推荐
- spoj 694 求一个字符串中不相同子串的个数
- 相邻字符串常量将会自动合并成一个字符串
- 如果字符串的一个子串(其长度大于 1)的各个字符均相同,则称之为等值子串。试设计一算法,求出串S中的最大等值子串 函数返回最大等值子串的长度,如果没有则返回1。 例如: 若S= “abc123abc1
- 给一个字符串s,计算具有相同数字0和1的非空(连续)子字符串的数量,并且这些子字符串中的全部0和全部1被连续分组。子串发生多次被计数的次数。
- 匹配一个字符串,它由0、1、2组成,并且中间没有两个相邻的数字是相同的(比如,匹配1232101210321020,而不匹配1100123)
- 找出一个字符串中最长连续相同子串
- 紫书章七例五 Krypton Factor UVA - 129(dfs)判断一个字符串中是否包含两个相邻子串
- 每天一道LeetCode-----将字符串的连续相同的字符合并成一个字符后加个数
- 紫书章七例五 Krypton Factor UVA - 129(dfs)判断一个字符串中是否包含两个相邻子串
- 紫书章七例五 Krypton Factor UVA - 129(dfs)判断一个字符串中是否包含两个相邻子串
- 找出一个字符串中最长连续相同子串
- 相邻字符串被合并为一个字符串
- 紫书章七例五 Krypton Factor UVA - 129(dfs)判断一个字符串中是否包含两个相邻子串
- 紫书章七例五 Krypton Factor UVA - 129(dfs)判断一个字符串中是否包含两个相邻子串
- C++_USACO_求一个字符串的从开头字母开始,直到发现某一不相同字母时,这个子串的长度
- 紫书章七例五 Krypton Factor UVA - 129(dfs)判断一个字符串中是否包含两个相邻子串
- 查找一个字符串中两个相同的最大的子串
- 紫书章七例五 Krypton Factor UVA - 129(dfs)判断一个字符串中是否包含两个相邻子串
- 紫书章七例五 Krypton Factor UVA - 129(dfs)判断一个字符串中是否包含两个相邻子串
- 合并map中key相同的value,产生一个新的map