第一个只出现一次的字符

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

posted @ 2011-02-13 00:13  akawhy  阅读(444)  评论(0编辑  收藏  举报