首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请大家帮帮忙!该如何处理

2012-02-20 
请大家帮帮忙!7,8,9,10,7,10,11,12,7,13这样的字符串,如何最快速的得到这样的串7,8,9,10,11,12,13也就是去

请大家帮帮忙!
7,8,9,10,7,10,11,12,7,13   这样的字符串,如何最快速的得到这样的串
7,8,9,10,11,12,13   也就是去掉相同的字符串

给个例子或者思想,先谢了

[解决办法]
检查子串是否已经在结果串里,如果不在,加入结果串,在就不加入
[解决办法]
#include <stdio.h>

int flag[1000];

int main()
{
int a[10]={7,8,9,10,7,10,11,12,7,13};
int b[11],i,cnt=0;
for(i=0;i <sizeof(a)/sizeof(a[0]);i++)
{
if(flag[a[i]] == 0)
{
b[cnt++] = a[i];
flag[a[i]] = 1;
}
}

for(i=0;i <cnt;i++)
{
printf( "%d ",b[i]);
}
printf( "\n ");

return 0;
}
[解决办法]
字符串分解然后比较是否有重复,
并去除重复内容,
然后重新生成字符串。
[解决办法]
#include "stdio.h "
main()
{
int i,j,a[10];
for(i=0;i <10;i++)
scanf( "%d ",&a[i]);

for(i=0;i <10;i++)
printf( "%d, ",a[i]);

for(i=0;i <9;i++)
for(j=i+1;j <10;j++)
if(a[i]==a[j])
a[j]=0;
printf( "\n ");
for(i=0;i <10;i++)
{if(a[i]==0)
continue;
printf( "%d, ",a[i]); }

}
[解决办法]
虫子代码唯一的缺陷就是并没有保证输出是以原来的顺序吧。。。题目是删掉重复的。

[解决办法]
定义一个 bool 数组A[1000],数组大小看字符串中最大数字而定(如果可能找出的话)
先初始化每个A的单元为FALSE
再开始对字符串进行遍历,分解
例如 假设第一个得到“7”,把“7”变成整形
if(!A[7])
{
把“7”加入到新的字符串中,并且A[7]=TRUE;(表示此字符串已经存储在新表中)
继续分解出下一个字符串
}
else
{
继续分解出下一个字符串
}
以此类推,一直到字符串遍历完毕,可以看出时间复杂度为O(N)

当然这个算法是针对楼主所说的,字符串里的值都是整形才行,要是有其他符号就另当别论了

热点排行