華為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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM