字符串中重复字符的处理
来源:互联网 发布:清华网络教育 编辑:程序博客网 时间:2024/06/04 17:55
第一类型:通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
比如字符串“abacacde”
过滤结果为“abcde”
#include<stdio.h>#include<string.h>void stringFilter(const char *inputstr,int len,char *outputstr){const char *p = inputstr;int a[26]={0};int i=0;for(i=0;i<len;i++){if(a[p[i]-'a'] == 0){*outputstr++=p[i];a[p[i]-'a'] = 1;}}}int main(){int len=0;char inputstr[1000];char outputstr[1000]={0};gets(inputstr);len = strlen(inputstr);stringFilter(inputstr,len,outputstr);printf("%s",outputstr);}
第二类型:通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 压缩规则: 1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。 2、压缩字段的格式为"字符重复的次数+字符"。
例如:字符串"xxxyyyyyyz"
压缩后就成为"3x6yz"。
#include<stdio.h>#include<string.h>void stringzip(const char *inputstr,int len,char *outputstr){const char *p = inputstr;int i=0;int num=1;for(i=0;i<len;i++){if(p[i]==p[i+1]){num++;}else{if(num==1)*outputstr++ = p[i];else{*outputstr++ = num + '0';<span style="color:#ff0000;">//超过10个的不符合。</span>*outputstr++ = p[i];}num = 1;}}}int main(){int len=0;char inputstr[1000];char outputstr[1000]={0};gets(inputstr);len = strlen(inputstr);stringzip(inputstr,len,outputstr);printf("%s\n",outputstr);printf("*******************************\n");int i=0;int num = 1;for(i=0;i<len;i++){if(inputstr[i] == inputstr[i+1]){num++;}else{if(num==1){printf("%c",inputstr[i]);}else{printf("%d",num);printf("%c",inputstr[i]);num=1;}}}printf("\n");}
0 0
- 字符串中重复字符的处理
- 哈希表对字符串的高效处理4:删除字符串中重复出现的字符
- 去掉字符串中重复的字符
- 删除字符串中重复的字符
- 去掉字符串中重复的字符
- javascript去掉字符串中重复的字符
- 删除字符串中重复的字符
- 从字符串中删除重复的字符
- 移除字符串中重复的字符
- javascript去掉字符串中重复的字符
- 过滤掉字符串中重复的字符
- 打印字符串中重复的字符
- 如何删除字符串中重复的字符
- 1.3 去除字符串中重复的字符
- 去除字符串中重复的字符
- 0056 去除字符串中重复的字符
- 寻找字符串中重复出现的字符
- 去除字符串中重复出现的字符
- 蓝牙技术发展
- Redis 常用命令
- unix命令自我总结
- Android SDK Manager不能更新的解决方案(已验证于2014.6.25)
- 进程与线程的区别
- 字符串中重复字符的处理
- MysQL数据库修改密码
- 软件架构视图
- STL(3)之for_each算法实现
- linux下由带-开头文件想到的
- 算法入门 3-4回文
- MFC 多线程总结
- 正则表达式
- 进程基本概念[1] 操作系统之哲学原理读书笔记啊