第一个只出现一次的字符
题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
思路是第一次循环统计每个字符出现的次数(利用map),接着找到map中值为1的键即为所求的值。
数模任重道远......继续.....
//第一个只出现一次的字符
//利用队列(错误的思路)
//利用map
#include<iostream>
#include<queue>
#include<map>
using namespace std;
//void myfind(char a[]){ //错误思路.............
// queue<char> my_queue;
// //my_queue.push(a[0]);
// for(int i=0;*(a+i)!='\0';i++){
// if(my_queue.empty()||my_queue.front()!=a[i]) //可以确保安全
// my_queue.push(a[i]);
// else
// my_queue.pop();
// }
// if(my_queue.empty()) cout<<"no answer"<<endl;
// else cout<<my_queue.front()<<endl;
//}
void myfind1(char *s){
map<char,int> my_map;
for(int i=0;*(s+i)!='\0';i++){
my_map[*(s+i)]++;
}
for(int i=0;*(s+i)!='\0';i++){
if(my_map[*(s+i)]==1){cout<<s[i]<<endl;return ;}
}
cout<<"error"<<endl;
return;
}
int main(void){
char *s="abaccdeff";
myfind1(s);
system("pause");
return 0;
}

浙公网安备 33010602011771号