急!高分求教,那位老兄知道怎么把一个字符串中的重复字符过滤掉,谢了!

zywzjx 2004-08-26 09:31:43
急!高分求教,那位老兄知道怎么把一个字符串中的重复字符过滤掉,谢了!

eg.
1) "1112345" "12345"
2) "43247FA3" "43247FA"
...全文
174 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2004-08-27
  • 打赏
  • 举报
回复
#include "stdio.h"
#include "memory.h"
#include "string.h"

char * Filter(char * pChar)
{
int nLen = strlen(pChar);
char * pReturn = new char [nLen];
memset(pReturn, 0, nLen);
char * pTemp = pReturn;

char flag[256]; //ÓÃÓÚͳ¼Æ×Ö·û³öÏֵĴÎÊý¡£
memset(flag, 0, 256);

for (; *pChar; pChar++)
{
if ( ! flag[*pChar] ) {*pTemp = * pChar; pTemp ++;};
flag[*pChar]++;
}
return pReturn;
};

main()
{
char * p1 = "43247FA3";
char * pT = Filter(p1);
delete pT;
return 1;
};
寻开心 2004-08-27
  • 打赏
  • 举报
回复
char * Filter(char * pChar)
{
int nLen = strlen(pChar);
char * pReturn = new char [strlen(pChar)];
memset(pReturn, 0, nLen);
char * pTemp = pReturn;

BYTE flag[256]; //用于统计字符出现的次数。
memset(flag, 0, 256);

for (; *pChar; pChar++)
{
if ( ! flag[*pChar] ) {*pTemp = * pChar; pTemp ++;};
flag[*pChar]++;
}
return pReturn;
};
crazyboy2003 2004-08-27
  • 打赏
  • 举报
回复
c++写法:
告诉你一个快速的方法,申明一点:字符串中字符的ASCII码要小于128
char* Filter(*p_in,len)
{
bit p[128] ;
char* u = new char[len+1];
int i = 0 ;
int s = 0 ;
int m_len = len;
for(int i = 0 ; i < len ;i++)
{
int t = p_in[i] ;
if(p[t])
{
continue ;
}
else
{
p[t] = 1 ;
u[s++] = t ;
}
}
u[s] = 0 ;
return u ;
}
metaphor 2004-08-27
  • 打赏
  • 举报
回复
第二个例子"43247FA3" "43247FA"
中间的4为什么保留?最后的3为什么去掉?
庄鱼 2004-08-26
  • 打赏
  • 举报
回复
void Fn2(const char *s,char *d)
{
unsigned char lab[256]={0},ch;
int i=0,j=0;
while(ch = *(s+i)){
if(lab[ch]){i++;continue;}
lab[ch]=1;
i++;*(d+ j++)=ch;}
}
庄鱼 2004-08-26
  • 打赏
  • 举报
回复
订正:
void Fn1(const char *s,char *d)
{
int i = 0;
while(*d = *(s+i)){
i++;
while(*d == *(s+i))i++;
d++;}
}
庄鱼 2004-08-26
  • 打赏
  • 举报
回复
void Fn1(const char *s,char *d)
{
while(*d = *s){
s++;
while(*d == *s)s++;
d++;}
}
  • 打赏
  • 举报
回复
C语言中有这个函数啊,在串里
programfanny 2004-08-26
  • 打赏
  • 举报
回复
先贴一个过滤连续相同字符的函数。
int dealwith(char *s,char *t)
{
char *p,ch;
p=s;
ch=*p++;
while(*p){
while(ch==*p)p++;
*t++=ch;
ch=*p++;
}
*t++=ch;
*t=0;
return 0;
}

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧