删除非连续重复字符

发布时间:2014-10-22 19:44:16编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"删除非连续重复字符",主要涉及到删除非连续重复字符方面的内容,对于删除非连续重复字符感兴趣的同学可以参考一下。

算法思路: 假设当前待处理字符位于目标字符数组的Snow处,当前结果字符数组的可用位置为Pnow,检查是否出现连续相同字符,如果出现,则将最长连续相同字符放入Pnow开始的连续可用位置;如果不出现,则取Snow处字符与结果字符(Pnow-1)到0处的字符对比,使用一个变量作为指示,如果没有找到匹配,该变量值为-1;如果找到,这变量值为匹配值所在位置。使用变量mismatch标识是否匹配到。如果匹配到则处理下一个未处理字符,如果未匹配到,则将该字符装入结果字符数组的Pnow处。 以下代码在xcode 4.6.3上编译通过 #include <stdio.h> #include <stdlib.h> typedef enum _bool{     no =0,     yes = 1 }bool; int main(int argc, const char * argv[]) {     char string[] = "ajsjdjjddddsssapoptfd";     int Snow = 0,Pnow = 0,i=0,j=0;     bool  mismatch = yes;     char processed[100];     while(string[Snow]){         j = Snow;         if (string[j]==string[++j]) {             while ((processed[Pnow++]=string[Snow])==string[++Snow]);         }else{             i = Pnow;             while ((--i>=0)&&(processed[i]!=string[Snow])) ;             if (i==-1) {                 mismatch = yes;             }else mismatch = no;             if(mismatch){                 processed[Pnow++]=string[Snow];             }             ++Snow;         }     }     processed[Pnow]='\0';     printf("%s",processed);     return 0; } 结果: ajsdjjjjddddssspotf


上一篇:同步和异步有何异同,在什么情况下分别使用他们?举例说明。
下一篇:hibernate mapping配置详解

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款