在一個字符串中找到第一個只出現一次的字符。如輸入 abaccdeff,則輸出 b。數組
一個字符串存儲的都是ASCII字符,其ASCII範圍不超過255。函數
所以能夠再建立一個255個元素的數組存儲字符串中字符出現的個數。spa
經過兩次遍歷便可求得。
指針
#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
還能夠使用指針實現。
編譯