首页 > 试题广场 >

给定字符串S,找出其中第一个出现一次的字符,要求时间复杂度O

[问答题]
给定字符串S,找出其中第一个出现一次的字符,要求时间复杂度O(N)。
```cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
    // 坐标 元素
    map<int, char> res;
    // 元素, 坐标
    unordered_map<char,int> map_;
    string str;
    cin >> str;
    for (int i = 0 ;i < str.size(); i ++) {
        if(map_.find(str[i]) == map_.end()) {
            map_[str[i]] = i;
            res[i] = str[i];
        }
        else {
            int rem = map_[str[i]];
            map_[str[i]] = i;
            res.erase(rem);
        }
    }
    if (res.empty()) 
        cout << -1;
    else cout << res.begin() -> second;
    return 0;
}
```

发表于 2022-07-20 21:14:37 回复(0)