华为OD机试 :磁盘容量排序

今天参加华为OD机试,总共有两道机试题,每道题200分,总共400分,华为那边要求是两道题全过。第一道题是磁盘容量排序,其实挺简单的,但我一直没调试好,导致心态直接崩了,后面第二题也没看,看来以后要好好刷题才行。

题目大意

磁盘的容量单位有M、G、T,其关系为 1T = 1000G、1G = 1000M,如样例所示先输入磁盘的个数,再依次输入磁盘的容量大小,然后按照从小到大的顺序对磁盘容量进行排序并输出。

样例输入

3
20M
1T
3G

样例输出

20M
3G
1T

代码实现

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int StrToInt(string str)
{
    if (str[str.size() - 1] == 'M') {
        return stoi(str.substr(0, str.size() - 1));
    } else if (str[str.size() - 1] == 'G') {
        return stoi(str.substr(0, str.size() - 1)) * 1000;
    } else if (str[str.size() - 1] == 'T') {
        return stoi(str.substr(0, str.size() - 1)) * 1000000;
    }

    return 0;
}

bool Compare(const string &strA, const string &strB)
{
    int a = StrToInt(strA);
    int b = StrToInt(strB);

    // 升序排序
    return a < b;
}

int  main(void)
{
    int n;
    while (cin >> n) {
        string str;
        vector<string> vec;

        while (n--) {
            cin >> str;
            vec.push_back(str);
        }

        sort(vec.begin(), vec.end(), Compare);

        for (auto i : vec) {
            cout << i << endl;
        }
    }

    return 0;
}

个人主页:

www.codeapes.cn

原文链接: https://www.cnblogs.com/codeapes666/p/12445607.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    华为OD机试 :磁盘容量排序

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/334137

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午9:31
下一篇 2023年3月1日 下午9:31

相关推荐