牛客:HJ26 字符串排序[华为机考][map]

学习要点

  1. multimap.equal_range

题目链接

字符串排序_牛客题霸_牛客网

题目描述

解法:multimap

cpp 复制代码
#include <bits/stdc++.h>
#include <cctype>
#include <iostream>
#include <unordered_map>
using namespace std;

int main() {
    string line_big_str;
    getline(cin,line_big_str);
    multimap<char,vector<int>> ch_bool_pos_map;
    vector<char> ret_ch(line_big_str.size(),'a');
    for(int i = 0;i<line_big_str.size();i++)
    {
        if(islower(line_big_str[i]))
        {
            // 构造值数组
            vector<int> tv;
            tv.push_back(1); tv.push_back(i);
            // 构造键值对:小写字母
            ch_bool_pos_map.insert({line_big_str[i],tv});
        }
        else if(isupper(line_big_str[i]))
        {
            // 构造值数组
            vector<int> tv;
            tv.push_back(0); tv.push_back(i);
            // 构造键值对:大写字母
            ch_bool_pos_map.insert({tolower(line_big_str[i]),tv});
        }
        else {
            // 确定非字母字符位置
            ret_ch[i] = line_big_str[i];
        }
    }
    // 写入ret_ch
    vector<char> t_ret;
    for(char ch = 'a';ch<='z';ch++)
    {
        auto it1 = ch_bool_pos_map.find(ch);
        if(it1 == ch_bool_pos_map.end())
        {
            continue;
        }
        else
        {
            // 构造单桶map
            auto it2 = ch_bool_pos_map.equal_range(ch);
            map<int,char> zi_map;
            for(auto i = it2.first;i != it2.second;i++)
            {
                zi_map[i->second[1]] = i->second[0] == 1 ? ch : toupper(ch);
            }
            // 填入t_ret
            for(auto& i: zi_map)
            {
                t_ret.push_back(i.second);
            }

        }
    }
    // 写入ret_ch
    for(int i = ret_ch.size() -1;i>=0;i--)
    {
        if(ret_ch[i] != 'a')
            continue;
        ret_ch[i] = t_ret.back();
        t_ret.pop_back();
    }
    // 开始打印
    for(auto& i: ret_ch)
    {
        cout << i;
    }
}













// 64 位输出请用 printf("%lld")
相关推荐
汇能感知4 小时前
摄像头模块在运动相机中的特殊应用
经验分享·笔记·科技
阿巴Jun4 小时前
【数学】线性代数知识点总结
笔记·线性代数·矩阵
茯苓gao5 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾5 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
DKPT6 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
ST.J6 小时前
前端笔记2025
前端·javascript·css·vue.js·笔记
Suckerbin6 小时前
LAMPSecurity: CTF5靶场渗透
笔记·安全·web安全·网络安全
小憩-7 小时前
【机器学习】吴恩达机器学习笔记
人工智能·笔记·机器学习
UQI-LIUWJ7 小时前
unsloth笔记:运行&微调 gemma
人工智能·笔记·深度学习
googleccsdn7 小时前
ESNP LAB 笔记:配置MPLS(Part4)
网络·笔记·网络协议