字符串个数统计操作,难度不大
#include<iostream> #include<string> #include<vector> #include<unordered_map> #include <algorithm> using namespace std; static bool cmp(const pair<char,int> &p1, const pair<char,int> &p2) { return p1.second < p2.second; } int main(){ string s; getline(cin, s, '\n'); unordered_map<char,int> u_map1; unordered_map<char,int> u_map2; for (int i = 0; i < s.size(); i++) { if (u_map1.find(s[i]) != u_map1.end()) { u_map1[s[i]]++; } else { u_map1[s[i]] = 1; u_map2[s[i]] = i; } } vector<pair<char,int>> vec; for (unordered_map<char,int>::iterator iter = u_map1.begin(); iter != u_map1.end(); iter++) { vec.push_back(make_pair(iter->first, iter->second)); } sort(vec.begin(), vec.end(), cmp); if(vec[0].second != 1) { cout << "-1" << endl; } else { int k = 0; while (vec[k + 1].second == 1) { k++; } if (k == 0) { cout << vec[0].first << endl; } else { vector<pair<char,int>> vec2; for(int i = 0; i <= k; i++) { int temp = u_map2[vec[i].first]; vec2.push_back(make_pair(vec[i].first, temp)); } sort(vec2.begin(), vec2.end(), cmp); cout << vec2[0].first << endl; } } return 0; }