#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//给定字串 寻找重复字符 并记录下位置
//若字串是"0aabb" 则输出a:1 a:2 b:3 b:4
int isExist(char distinct[],char ch);
int addToExist(char distinct[],char ch);
int countTimes(char str[],int len,char ch);
main()
{
char str[]="abcaaAB12ab12";
int i=0;
char distinct[20];
for(; i<20; i++)
{
distinct[i]=0;
}
//addToExist(distinct,'a');
//printf("%c",distinct[0]);//ok
int len=strlen(str);
//printf("%d",isExist(distinct,str[0]));//ok
for(i=0; i<len; i++)
{
int isEx=isExist(distinct,str[i]);//存在则是1
//遇到新字符 放入到distinct中去
//然后统计该字符出现次数
if(!isEx)
{
//printf("not %c",str[i]);//ok
addToExist(distinct,str[i]);
countTimes(str,len,str[i]);
}
else
{
//越过
}
}
}
int isExist(char distinct[],char ch)
{
int i=0;
int yes=0;//该字符是否已经存在
for(; i<20; i++)
{
if(distinct[i]==ch)
{
yes=1;
break;
}
}
return yes;
}
/**
新字符加入到最有一个有效字符之后
也就是放在第一个ASCII为0的位置 先前已经将distinct数组所有元素赋值为0
*/
int addToExist(char distinct[],char ch)
{
int i=0;
char st;
while( (st=distinct[i])!=0 )
{
i++;
}
distinct[i]=ch;
return ++i;
}
/**
注意只有重复字符才输出他们的位置
*/
int countTimes(char str[],int len,char ch)
{
int i=0;
int countChar=0;
for(; i<len; i++)
{
if(str[i]==ch)
{
//printf("%c:%d,",ch,i);
countChar++;
}
}
if(countChar>1)
{
for(i=0; i<len; i++)
{
if(str[i]==ch)
{
printf("%c:%d,",ch,i);
}
}
}
return countChar;
}