题目:在一个字符串中找到第一个只出现一次的字符。如输入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; }