题解 | #找出字符串中第一个只出现一次的字符#
找出字符串中第一个只出现一次的字符
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; }