统计字符串中的重复字符,可以通过简单哈希算法来实现。
创新互联建站长期为千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为灵武企业提供专业的网站建设、成都网站制作,灵武网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
有效的字符的ascii值在0-127之间,定义一个128位的数组,初始化为0,用数组下标对应相应的字符,数组元素值表示字符出现的频率,统计相应字符的个数,个数大于1的字符就是重复的。
参考代码如下:
#include
void main()
{
char s[1024];
int carr[128]={0};
int i;
printf("input a string: ");
gets(s);
for( i=0;s[i];i++ )
{
int index=s[i];
if ( index =0 index = 127 ) //安全处理,防止输入异常时,程序出错
carr[index]++ ;
}
for( i=0;i128;i++ )
if ( carr[i] 1 )
printf("%c:%d\n", i, carr[i] );
}运行结果:
input
a
string:
hello
world
l:3
o:2
#includestdio.h
#include stdlib.h
#includestring.h
char Hash[30];
int main()
{
char A[]="aaadddcccde ";
int i,n=strlen(A);
for(i=0; in; i++)
{
if(Hash[A[i]-'a']==0) Hash[A[i]-'a']=1,printf("%c",A[i]);
}
return 0;
}
不知道是不是你要的。
#define N 100 //定义最多可以测试100个字串
#define M 100 //定义每个字串最长100
#define END "End!" //定义结束输入的字串
#include stdio.h
#include stdlib.h
#include string.h
int issame(char *p[],char *f,int n){
int i;
for(i=0;i=n;i++)
if(strcmp(p[i],f)==0) return 1;
return 0;
}
int main(void){
char *p[N];
int i=0,total;
int count=0;
printf("请输入不多于%d的字符串,以End!为结束\n",N);
while(1){
p[i]=(char *)(malloc(M)); //定义每个字串最长为100
printf("第%d个字串:",i+1);
gets(p[i]);
if (strcmp(p[i],END)==0) break; //如果输入了结束标记则结束输入
i++;
}
total=i-1; //计算总共输入了多少字串
printf("以下得出不同的字串\n");
for(i=0;i=total;i++){
if(issame(p,p[i],i-1)==0){ //检查是否与前面输入的字符一致
count++;
printf("%d\t%s\n",count,p[i]);
}
}
}