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

来源:互联网 发布:深圳黑马程序员就业 编辑:程序博客网 时间:2024/06/05 01:00

思路

一个字符占8位,那么它最多可以表示256种字符。因为每个字符都有一个ASCII码,所以可以定义一个用于记录字符出现次数的数组,用字符的ASCII码做为数组的下标,当遍历字符串时,就给相应下标对应的字符次数加1。这样对字符串的一次遍历就能记录每个字符出现的次数。再按字符的出现顺序,输出第一个出现次数为1的字符。

#include <iostream>using namespace std;//在字符串pszStr中查找只出现1次的字符并返回它char FirstNotRepeatCharacter(char *pszStr){if (NULL == pszStr){return 0;}//创建一个大小为256的数组,用于存放字符出现的次数int arr[256] = {0};char *p = pszStr;while (*p){++arr[*p];++p;}//返回那个第一次出现的字符p = pszStr;while(*p){if (1 == arr[*p]){return *p;}++p;}}int main(){char arr[] = "abaccdeff";char ch = FirstNotRepeatCharacter(arr);cout<<ch<<endl;return 1;}


原创粉丝点击