编写一个函数del(s),将输入的字符串s中重复出现的字符删除,只保留最后出现的字符,要求大小写无关(即'A'与'a'视为相同字符)。在main()函数中测试此函数:从键盘输入一个字符串,然后调用该函数进行删除重复字符串操作,将结果打印到屏幕上。
定义一个新字符数组,对s字符串进行倒序字符判断,如果在新字符数组中出现则丢弃,未出现则加入新字符数组。最后将新字符数组中的字符逆序回写到s字符串
#include<stdio.h>
char * del(char *s)
{
int len = strlen(s);
char *p = (char*)malloc(sizeof(char)*(len+1));
int n = 0,i,j;
for(i=len-1;i>=0;i--)
{
for(j=0;j<n;j++)
{
if(s[i] >= 'a' && s[i] <= 'z')
{
if(s[i] == p[j] || s[i] == (p[j]+'a'-'A'))
break;
}
else if(s[i] >= 'A' && s[i] <= 'Z')
{
if(s[i] == p[j] || s[i] == (p[j]+'A'-'a'))
break;
}
}
if(j==n)
p[n++] = s[i];
}
for(i=0;i<n;i++)
s[n-i-1] = p[i];
s[n] = 0;
free(p);
return s;
}
int main(void)
{
char s[1000];
gets(s);;
printf("%s\n",del(s));
return 0;
}