题解 | #找位置#

找位置

http://www.nowcoder.com/practice/e3b2cc44aa9b4851bdca89dd79c53150

用unordered_map<string, vector>储存字符及其出现的位置序列,结合vector记录不同字符的先后位置。

  #include<bits/stdc++.h>
using namespace std;
int main(){
    string str, s;
    unordered_map<string, vector<int>> res;
    vector<string> keys;
    while(cin >> str){
        res.clear();
        keys.clear();
        for(int i = 0; i < str.size(); i++){
            s = str[i];
            if(res.count(s) == 0){
                keys.push_back(s);
                res.emplace(s, vector<int>{i});
            }else{
                res[s].push_back(i);
            }
        }
        for(auto iter = keys.begin(); iter != keys.end(); iter++){
            if(res[*iter].size() == 1)continue;
            for(int i = 0; i < res[*iter].size(); i++){
                cout << *iter << ':' << res[*iter][i];
                if(i < res[*iter].size()-1)cout << ',';
                else cout << endl;
            }
        }
    }
    return 0;
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务