# LeetCode - 0937. Reorder Data in Log Files ### 題目網址:https://leetcode.com/problems/reorder-data-in-log-files/ ###### tags: `LeetCode` `Easy` `字串` `模擬` ```cpp= /* -LeetCode format- Problem: 937. Reorder Data in Log Files Difficulty: Easy by Inversionpeter */ class Solution { static bool Compare(vector <string> a, vector <string> b) { int length = min(a.size(), b.size()); for (int i = 1; i < length; ++i) if (a[i] != b[i]) return a[i] < b[i]; if (a.size() != b.size()) return a.size() < b.size(); return a[0] < b[0]; } public: vector<string> reorderLogFiles(vector<string>& logs) { vector <vector <string>> letters; vector <string> digits, answer; string identifier, buffer; int last, type; for (string &log : logs) { last = 0; type = -1; log += ' '; for (int i = 0; i != log.size(); ++i) if (log[i] == ' ') { if (!last) identifier = log.substr(0, i); else { buffer = log.substr(last, i - last); if (type == -1) { type = isalpha(buffer[0]); if (type) letters.push_back({ identifier }); else digits.push_back(identifier); } if (type) letters.back().push_back(buffer); else digits.back() += ' ' + buffer; } last = i + 1; } } sort(letters.begin(), letters.end(), Compare); for (int i = 0; i != letters.size(); ++i) { answer.push_back(letters[i][0]); for (int j = 1; j != letters[i].size(); ++j) answer.back() += ' ' + letters[i][j]; } for (int i = 0; i != digits.size(); ++i) answer.push_back(digits[i]); return answer; } }; ```