题解 | #字符串排序#

字符串排序

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

利用unordered_map和stable_sort()函数实现自定义的稳定排序

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <unordered_map>
using namespace std;

// 用于记录排序顺序
unordered_map<char, int> orders;
// 比较函数
bool cmp(char lhs, char rhs) {
    return orders[lhs] < orders[rhs];
}
// 判断是不是字母
bool isLetter(char c) {
    return c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z';
}
int main() {
    // 初始化map
    for (char c = 'a'; c <= 'z'; ++c) {
        orders[c] = c - 'a';
    }
    for (char c = 'A'; c <= 'Z'; ++c) {
        orders[c] = c - 'A';
    }
    string str;
    while (getline(cin, str)) {
        // vector只存放字母
        vector<char> chars;
        for (int i = 0; i < str.length(); ++i) {
            if (isLetter(str[i])) {
                chars.push_back(str[i]);
            }
        }
        // 对vector进行稳定排序
        stable_sort(chars.begin(), chars.end(), cmp);
        // 将str内的字母替换为vector中的字母
        for (int i = 0; i < str.length(); ++i) {
            if (isLetter(str[i])) {
                str[i] = chars.front();
                chars.erase(chars.begin());
            }
        }
        // 输出字符串
        cout << str << endl;
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 12:11
点赞 评论 收藏
分享
嵐jlu:我是山川🐔里🐔🧱的,阿里系简历全过; 你这简历一看就还是半成品啊,没有荣誉经历奖项什么的吗?
投递阿里巴巴集团等公司10个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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