拿到这道题,我们首先想到的做法是:设置一个计数器,从字符串的第一个字符开始进行遍历,遇到字符就开始让计数器自增,但是我们如何处理不同的字符到底被计数了所少次呢,这时候就比较棘手,那么我们就来用下面我介绍的这种方法来进行解决。
思路分析:
1)我们知道字符的大小不会超过256,所以我们先设置一个大小为256的数组
2)我们开始进行字符串的遍历,将每一个字符作为数组的下标进行自增,(其实原理就是每一个字符都有自己对应的ASCII码值)
3)然后到这一步我们就将字符串中每一个字符对应的次数统计了下来,所以我们再次进行字符串的遍历,找出次数是1的字符,此字符就是我们要找的字符,否则就是没找到。
代码如下:
#include<stdio.h>
char Find(char* str)
{
int arr[256] = {0};
char *temp = str;
while(*str)
{
arr[*str]++;
str++;
}
str = temp;
while(*str)
{
if(arr[*str] == 1)
{
return *str;
}
str++;
}
return -1;
}
int main()
{
char *p = "aaaabfqccrbdw";
int ret = Find(p);
if(ret != -1)
{
printf("%c",ret);
}
return 0;
}