1 查找字符串中第一個只出現一次的字符

/*
* 找出一個字符串中第一個只出現一次的字符。
思路:
 假設字符是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'
}
相關文章
相關標籤/搜索