第一个只出现一次的字符
2015-08-26 22:29 codinglol 阅读(141) 评论(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 }