当前位置:C++技术网 > 资讯 > 经典算法--输出字符流中第一个不重复的字符

经典算法--输出字符流中第一个不重复的字符

更新时间:2016-04-21 20:51:17浏览次数:1+次

原文是《经典算法——字符流中第一个不重复的字符》,在原文中,利用的是哈希表来实现的。由于我还没有学哈希表,因此,没有用这种方法。前段时间,做了一个统计字符的算法,就是利用STL中的算法,因此,本文,也用STL的算法来做。
先看看实现:

#include "iostream"
#include "windows.h"
#include "map"
#include "vector"
#include "algorithm"
#include "iterator"
#include "string"

using namespace std;

int main()
{
vector<char> coll;
copy(istream_iterator<char>(cin),istream_iterator<char>(),back_inserter(coll));

map<char,int> counts;
char word;

BOOL IsCheck=false;

for(int i=0; i<coll.size(); ++i)
{
word=coll.at(i);
++counts[word];
}

for(int j=0; j<coll.size(); j++)
{
char cha=coll.at(j);
map<char,int>::iterator num(counts.find(cha));
if(num==counts.end())
{
cout<<"查找出错!"<<endl;
}
if(num->second==1&&IsCheck==false)
{
cout<<num->first<<endl;
IsCheck=true;
}
}

system("pause");
return 0;
}
主要就是map数据结构的应用。