/*
* 找出一個字符串中第一個只出現一次的字符。
思路:
假設字符是ASCII字符,佔一個字節,則最多爲256個字符,用一個標記數組book[256]來記錄每一個字符出現的次數,最後遍歷這個標記數組,找到第一個元素值爲1的數據的下標值,這個下標就是要找的字符。
*/
#include<stdio.h>
char 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'
}