用类似位图的办法,只是用数字实现。利用数组统计每个字符出现的次数,然后扫描第一个次数为1的元素
#include "stdafx.h"
#include<iostream>
#include<map>
#include<algorithm>
using namespace std;
char findSingle(char *str)//一遍扫描法
{
int count[256]={0};//这里都是小写字母,所以大小是26,也可以设置为256
char *p = str;
while(*p != '\0')
{
count[*p]++;
p++;
}
for(int i=0;i<256;i++)
{
if(count[i] == 1)
{
return static_cast<char>(i);
}
}
}
int main()
{
char *str="fsdfasfdiarewtrewtrew";
cout<<findSingle(str)<<endl;
getchar();
return 0;
}