今天參加華為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;
}
個人主頁: