在一個字符串中找到第一個只出現一次的字符。

題目:

    在一個字符串中找到第一個只出現一次的字符。如輸入 abaccdeff,則輸出 b。數組

分析:

    一個字符串存儲的都是ASCII字符,其ASCII範圍不超過255。函數

    所以能夠再建立一個255個元素的數組存儲字符串中字符出現的個數。spa

    經過兩次遍歷便可求得。
指針

代碼實現(GCC編譯經過):

#include "stdio.h"
#include "stdlib.h"

//查找字符串中第一個只出現一次的字符
char firstSingle(char * str);

int main(void)
{
	char str[] = "abaccdeff";
	char tmp = firstSingle(str);
	printf("%c\n",tmp);

	return 0;
}

char firstSingle(char * str)
{
	//ASCII表有255個字符,建立一個255個元素的映射數組初始爲0
	int asc[255] = {0};
	int i;
	
	//遍歷字符串,同時作字符的ASCII值映射到數組下標統計出現次數;
	for(i=0;str[i]!='\0';i++)
		asc[str[i]]++;

	//再次遍歷,找到第一個出現一次的字符即爲所求
	for(i=0;str[i]!='\0';i++)
		if(asc[str[i]] == 1)
			return str[i];
	//不然返回空
	return '\0';
}

注:
code

    這種值映射到下標是比較常見的一種方式,一些狀況下避免了數組的遍歷。
字符串

    數組初始化能夠使用函數:void *memset(void *s, int ch, sizet n);io

    還能夠使用指針實現。
編譯

相關文章
相關標籤/搜索