题解 | #找出字符串中第一个只出现一次的字符#
找出字符串中第一个只出现一次的字符
https://www.nowcoder.com/practice/e896d0f82f1246a3aa7b232ce38029d4
#include <climits>
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main ()
{
int n = 0;
char c;
typedef pair<int, int> T;//第一个是字母出现位置,第二次是字母出现次数;
map<char,T> mapStr;
T tt;
while (cin >> c){
// if (mapStr.count(c)){
tt.first = n;
auto it = mapStr.find(c);
if (it != mapStr.end()){
tt.second += 1;
}
else{
tt.second = 1;
}
mapStr[c] = tt;
n++;
}
char cans = ' ';
int Serial = INT_MAX;
for (auto it = mapStr.begin(); it != mapStr.end(); it++){
if (it->second.second == 1){
if (Serial > it->second.first){
cans = it->first;
Serial = it->second.first;
}
}
}
if (cans != ' '){
cout << cans << endl;
}
else{
int ans = -1;
cout << ans << endl;
}
return 0;
}
查看7道真题和解析