求助大侠
怎么把一个字符串里相同的字符给删除了?例如:aabbccdededegft
变成:abcdegft
----------------解决方案--------------------------------------------------------
hash记录直接输出
----------------解决方案--------------------------------------------------------
能不能详细说明一下
hash我没有学过
----------------解决方案--------------------------------------------------------
我这有可以把所有相邻相同的字符删除
#include"stdio.h"
#include"string.h"
int main()
{
char a[1000],*p;
p=a;
gets(a);
do
{
if(*(p+1)==*p)
{
strcpy(p,p+1);
}
else
p++;
}while(*p!='\0');
puts(a);
}
----------------解决方案--------------------------------------------------------
哦
明白了
谢谢
----------------解决方案--------------------------------------------------------
4楼代码低效
----------------解决方案--------------------------------------------------------
燕子谢谢你哦...呵呵..上面那个不完整..而且我没考虑效率..只是考虑一下能不能有结果..下面这个是做好的
#include"stdio.h"
#include"string.h"
int main()
{
char a[1000],*p;
char b[1000]={0};
gets(a);
p=a;
do{
if(b[(int)*p]++>=1)
strcpy(p,p+1);
else
p++;
}while(*p!='\0');
puts(a);
}
[[it] 本帖最后由 sunkaidong 于 2008-3-18 22:54 编辑 [/it]]
----------------解决方案--------------------------------------------------------
谢谢
[[it] 本帖最后由 lymanni 于 2008-3-18 21:54 编辑 [/it]]
----------------解决方案--------------------------------------------------------
没用到i,j。有点不懂。
----------------解决方案--------------------------------------------------------
我的程序,不过有个缺点,就是如果 a[0],a[1]都是同一个字符,就排不出a[1],
#include <iostream>
using namespace std;
int main ()
{
const int SZ=25;
char a[SZ]="aaagggjkseiieilsknnl";
int i,j,sz;
sz=SZ;
for (i=0;i<=sz;++i)
for(j=i+1;j<=sz;++j)
{
if (a[i]==a[j])
--sz;
for (;j<=sz;++j)
a[j]=a[j+1];
}
for(i=0;i<=sz;++i)
cout<<a[i]<<" "<<endl;
}
另外 请教一哈 7 楼
if(b[(int)*p]++>=1)是什么意思,++>是什么意思;
[[it] 本帖最后由 wolfs 于 2008-3-18 22:56 编辑 [/it]]
----------------解决方案--------------------------------------------------------