在一个字符串中找到第一个只出现一次的字符。如输入 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
还能够使用指针实现。
编译