题解 | 找位置 方法二: multimap,但还是要vector<char>记录先后顺序

找位置

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

#include <iostream>
// map不允许 关键字重复 的键值对,只会读入第一对,其它无影响
#include <map>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    char input[200] = {0}; // 初始化
    // 按照key排序,会打乱  原先输入顺序,关于顺序可以用vector记录
    multimap<char, int> charAndPos;  // 题目要求可以记录重复的char
    vector<char> charOrder;  // 记录字符第一次录入先后顺序
    vector<char>::iterator findIt;
    while (cin >> input) {
        for (int i = 0; input[i] != '\0'; i++) { // 读入元素
            charAndPos.insert({input[i], i});
            // 误区: 直接调用find()函数,不是charOrder.find()
            findIt = find(charOrder.begin(), charOrder.end(), input[i]);
            if (findIt == charOrder.end()) {
                charOrder.push_back(input[i]);   // 记录字符顺序(第一次出现才记录)
            }
        }
        vector<char>::iterator charIt;
        for (charIt = charOrder.begin(); charIt != charOrder.end(); charIt++) {
            if (charAndPos.count(*charIt) > 1) {  // 重复字符才打印
                multimap<char, int>::iterator posIt;
                //charAndPos.lower_bound(*charIt)+1 这样错误,不能使用+1
                // posIt = charAndPos.lower_bound(*charIt); posIt++; 这样解决
                posIt = charAndPos.lower_bound(*charIt);
                cout << *charIt << ":" << posIt->second;
                posIt++;
                for (posIt; posIt != charAndPos.upper_bound(*charIt);
                        posIt++) {
                    cout << "," << *charIt << ":" << posIt->second;
                }
                cout << endl;
            }
        }
    }
}

#考研##复试练习##笔试#
2025考研复试 文章被收录于专栏

复试ing,努力中。。。

全部评论

相关推荐

头像
11-03 16:48
已编辑
百度_高级研发工程师
事实是检验真理的唯一标准。&nbsp;无论我们怎么去说,去讲述,去证明,都抵不过一个offer来得实在,无论我们怎么去复现求职中的摸爬滚打、扒皮抽筋、狼狈不堪,都抵不过你在简历写上大厂的名字(外包不算)。&nbsp;所以在我求职期间,我什么话都不说,什么话都不讲,因为没有意义,虽然我总讲过程才是意义,但只有当你上岸的那一刻,你才有资格回想在水里的挣扎,只有等你出了山,你才知道山的全貌。&nbsp;我为什么一定要离开华为OD,难道它不稳定吗,不能赚钱吗。为了证明自己,那肯定有的。其实更多的是印证我的认知是否真的正确。&nbsp;(给不了解我的人交代一下背景,在下双非一本,gap一年,华为OD外包,摸爬滚打4个月,艰难上岸百度正编)一、...
先锋战士:说得很真诚。鄙视链自古有之,学历,家庭背景,财富,权利。从小有之,小学羡慕那些当班委的,中学羡慕那些学生会的,高中羡慕尖子班拿教学金的,大学羡慕高绩点,毕业了羡慕进大厂的。工作了,又羡慕高职级的,再后来又羡慕别人早早结婚的。我想表达的观点很简单,无论是华为od还是百度,都是经历,没有孰高孰低,为了抵达下一个风景,总会付出更多东西,但不就是人生吗?正如登山,每个阶段的山,都要想办法攀登,在博主的文字中,见到了坚持和积极寻找问题解决办法的心态
学历对求职的影响
点赞 评论 收藏
分享
在看牛客的社畜很积极:身高体重那一行信息去掉,学校那一行的信息放上面,找半天都没找到你是哪个学校什么专业的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务