删除重复字符,同一个字符不区分大小写

编写一个函数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;
}