//哈希法:map
class Solution {
public:
void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {
unordered_map<int,int> map;
for(int ii=0;ii<data.size();ii++){
map[data[ii]]++;
}
auto it=map.begin();
while(it!=map.end()){
if(it->second==1) {*num1=it->first;it++;break;}
it++;
}
while(it!=map.end()){
if(it->second==1) {*num2=it->first;it++;break;}
it++;
}
}
};
字符串中第一个只出现一次的字符
“abaccdeff”->‘b’;
这道题目相比上一道思路一样,只不过选择做哈希映射的数据结构改为了数组
即:创建一个大小为256,以字符ASCII码为键值的哈希表
class Solution {
public:
char firstUniqChar(string s) {
int map[256]={0};
int size=s.size();
for(int ii=0;ii<size;ii++){
map[s[ii]]++;
}
char ch=' ';
for(int ii=0;ii<size;ii++){
if(map[s[ii]]==1) {
ch=s[ii];
break;
}
}
return ch;
}
};