/* * 找出一个字符串中第一个只出现一次的字符。 思路: 假设字符是ASCII字符,占一个字节,则最多为256个字符,用一个标记数组book[256]来记录每个字符出现的次数,最后遍历这个标记数组,找到第一个元素值为1的数据的下标值,这个下标就是要找的字符。 */
#includechar firstOne(char* p);int main(){/* int book[256] = {0};//用来标记每个字符出现的次数,因为一个ASCII字符占一字节 char c = '\0';//用来记录从输入读取的一个字符 while(scanf("%c",&c)==1)//循环读取输入的字符串 { int i = (int)c; book[i]++; } for(int i = 0;i<256;i++) { if(book[i]==1) { printf("%c",(char)i); break; } }*/ char* str = "abaccdeff"; printf("%c",firstOne(str)); return 0;}char firstOne(char* str){ int book[256] = {0};//用来标记每个字符出现的次数,因为一个ASCII字符占一字节 while((*str)!='\0')//循环读取输入的字符串 { int i = (int)(*str);//将字符强转为int下标 book[i]++;//出现一次就递增一次 str++; } //遍历数组中第一个值为1的下标值即就是第一个只出现一次的字符 for(int i = 0;i<256;i++) { if(book[i]==1) { return (char)i;//强转回char字符 } } return '\0';//没找到则返回'\0'}