【题目描述】
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
比如字符串“abacacde”过滤结果为“abcde”。
代码:
方法一
#include<stdio.h>
#include<string.h>
void filter(char ch[],int len)
{
int i,j;
for(i=0;i<len;i++)
{
for(j=i+1;j<len;j++)
{
if(ch[i]==ch[j])
{
strcpy(&ch[j],&ch[j+1]);
len=strlen(ch);
filter(ch,len);
}
}
}
}
int main(void)
{
char zifu[100];
int len,i,j,c=0;
gets(zifu);
len = strlen(zifu);
filter(zifu,len);
printf("%s",zifu);
}
方法二
#include<stdio.h>
#include<string.h>
void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr)
{
int flag[26]={0};
int i,j=0;
for(i=0;i<lInputLen;i++)
{
if(flag[pInputStr[i]-'a']==0)
{
pOutputStr[j++]=pInputStr[i];
flag[pInputStr[i]-'a']=1;
}
}
pOutputStr[j] = '\0';
}
int main(void)
{
char input[20];
char output[20];
int len;
gets(input);
len=strlen(input);
stringFilter(input,len,output);
printf("%s",output);
}