删除非连续重复字符
来源:互联网 发布:道路交通事故数据统计 编辑:程序博客网 时间:2024/05/22 08:08
算法思路:
假设当前待处理字符位于目标字符数组的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
0 0
- 删除非连续重复字符
- 删除非连续重复记录
- 去掉连续重复的字符
- 去掉连续重复的字符
- 删除重复字符
- 删除重复字符
- 删除重复字符
- 删除重复字符
- 删除重复字符 C++
- 删除重复字符
- 删除重复字符
- 删除重复字符
- 删除重复字符
- 【C++】删除重复字符
- 删除重复字符
- 删除重复字符
- 删除重复字符
- HWOJ 删除重复字符
- Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型
- DNS无法解析的网页的处理
- Nginx 日志格式简介
- iOS使用CoreMotion实现摇一摇功能
- 同步和异步有何异同,在什么情况下分别使用他们?举例说明。
- 删除非连续重复字符
- lucene工作原理
- HTTPS Server - Python2
- forward 和redirect的区别
- <a>标签 targe属性
- Java异常处理
- Mysql官方文档学习[介绍一]
- 如何用VirtualBox使用虚拟双核的XP系统(Linux下)
- 常用正则表达式