找出字符串中第一个只出现一次的字符

题目
找出字符串中第一个只出现一次的字符
文章图片

描述

找出字符串中第一个只出现一次的字符
详细描述: 接口说明
原型:
bool FindChar(char* pInputString, char* pChar);
输入参数: char* pInputString:字符串
输出参数(指针指向的内存区域保证有效):
char* pChar:第一个只出现一次的字符
如果无此字符 请输出’.’
输入
【找出字符串中第一个只出现一次的字符】输入一串字符
输出
输出一个字符
样例输入
asdfasdfo
样例输出
o
思路
统计出现次数,输出第1次出现次数为1的字符。
重点!!!!
map 是根据关键字排序的!!!!
因此可以通过计数器将重复的字符设置为0,其余的就是出现一次的按照计数器,遍历的到最小的就是知道第一个出现一次的字符。
但是
对于指定次数的统计,如第一次只出现两次的字符,则需要进行处理,可以用结构体来实现,用结构体记录出现的位置、次数、字符。。。。同样可以解决。
找出字符串中第一个只出现一次的字符
文章图片

代码
#include #include #includeusing namespace std; bool FindChar(string &str,char* pChar) { bool flag=false; map tempMap; int counter=1; //统计次数 for(unsigned int i=0; iif(tempMap.find(str[i]) == tempMap.end()) tempMap[str[i]] = counter++; else tempMap[str[i]]=0; } //找第一次出现的字符 int minNumber=counter; for(map::iterator iter = tempMap.begin(); iter!=tempMap.end(); ++iter) { if((iter->second!=0)&&(iter->secondfirst; flag=true; minNumber=iter->second; } } return flag; } int main() { string s; char pChar; bool result=false; getline(cin,s); result = FindChar(s,&pChar); //找第一次出现的字符 if(result){ cout

推荐测试用例
1. asdfasdfo (o)
2. aawd (w)
3. aabbcc (.)
找出字符串中第一个只出现一次的字符
文章图片

    推荐阅读