代码改变世界

第一个只出现一次的字符

2015-08-26 22:29  codinglol  阅读(140)  评论(0编辑  收藏  举报

题目描述

在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。

分析与解法

这个问题比较容易解决,对于ASCII字符,可以构造一个大小为256的数组,用来记录每个字符出现的次数。第一遍遍历字符串,统计每个字符出现的次数。第二次遍历字符串,找到第一个出现一次的字符。代码如下:

 1 char FirstNotRepeatingChar(char *str){
 2     if (str == nullptr)
 3         return 0;
 4     int count[256] = { 0 };
 5     for (int i = 0; str[i] != '\0';++i){
 6         int index = static_cast<int>(str[i]);
 7         count[index]++;
 8     }
 9     for (int i = 0; str[i] != '\0'; ++i){
10         int index = static_cast<int>(str[i]);
11         if (count[index] == 1)
12             return str[i];
13     }
14     return 0;
15 }