zoukankan      html  css  js  c++  java
  • 华为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

  • 相关阅读:
    JAVA传值与传址
    JAVA中的栈和堆
    for语句输出图形
    Linux下ps命令详解(转载)
    BMC介绍
    JVM 优化、内存泄露排查、gc.log 分析方法等(转载)
    动态从zookeeper读取kafka信息
    centos 查看文件系统类型
    TCPdump抓包命令详解
    Linux Tab键自动补齐
  • 原文地址:https://www.cnblogs.com/codeapes666/p/12445607.html
Copyright © 2011-2022 走看看