找出字符串中第一个只出现一次的字符
2016-12-21 22:08
197 查看
题目
描述
找出字符串中第一个只出现一次的字符详细描述:
接口说明
原型:
bool FindChar(char* pInputString, char* pChar);
输入参数:
char* pInputString:字符串输出参数(指针指向的内存区域保证有效):
char* pChar:第一个只出现一次的字符如果无此字符 请输出’.’
输入
输入一串字符输出
输出一个字符样例输入
asdfasdfo样例输出
o思路
统计出现次数,输出第1次出现次数为1的字符。重点!!!!
map 是根据关键字排序的!!!!
因此可以通过计数器将重复的字符设置为0,其余的就是出现一次的按照计数器,遍历的到最小的就是知道第一个出现一次的字符。
但是
对于指定次数的统计,如第一次只出现两次的字符,则需要进行处理,可以用结构体来实现,用结构体记录出现的位置、次数、字符。。。。同样可以解决。
代码
#include<iostream> #include<string> #include<map> using namespace std; bool FindChar(string &str,char* pChar) { bool flag=false; map<char, int> tempMap; int counter=1; //统计次数 for(unsigned int i=0; i<str.size(); i++) { if(tempMap.find(str[i]) == tempMap.end()) tempMap[str[i]] = counter++; else tempMap[str[i]]=0; } //找第一次出现的字符 int minNumber=counter; for(map<char, int>::iterator iter = tempMap.begin(); iter!=tempMap.end(); ++iter) { if((iter->second!=0)&&(iter->second<minNumber)){ (*pChar) = iter->first; 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<<pChar<<endl; }else{ cout<<"."<<endl; } return 0; }
推荐测试用例
1. asdfasdfo (o)
2. aawd (w)
3. aabbcc (.)
相关文章推荐
- 使用递归算法重做:找出字符串中第一个只出现一次的字符
- 第十七题(找出字符串中第一个只出现一次的字符)
- 只允许遍历一遍字符串,找出字符串中第一个只出现一次的字符
- 找出字符串中第一个只出现一次的字符
- c++面试题之 找出字符串中第一个只出现一次的字符
- 找出字符串中第一个只出现一次的字符——来自华为OJ平台测试基础篇
- 【c语言】第一个只出现一次的字符题目:在字符串中找出第一个只出现一次的字符
- 找出字符串中第一个只出现一次的字符
- 【一些题】剑指offer:在字符串中找出第一个只出现一次的字符
- 找出字符串中第一个只出现过一次的字符和位置
- 【华为OJ】找出字符串中第一个只出现一次的字符
- 只允许遍历一遍字符串,找出字符串中第一个只出现一次的字符
- 找出一个字符串中,第一个只出现一次的字符
- 找出字符串中只出现一次的第一个字符
- 【华为oj】找出字符串中第一个只出现一次的字符
- 如何找出一个字符串中第一个只出现一次的字符
- 字符串----找出字符串中第一个只出现一次字符
- 【100题】找出一个字符串中第一个只出现一次的字符
- 35 - 找出字符串中第一个只出现一次的字符
- 找出字符串的第一个只出现一次的字符