华为oj 简单错误记录

    xiaoxiao2026-10-05  2

    这道题不难,注意几点,最多八条记录的意思是超过八条,只取最后的八条,文件名称最多16个字符只要这两点做好了就可以了,但是比较尴尬的是,我做出一种解法,在别的平台所有测试用例通过,在华为官方显示格式错误,我无论怎么修改都过不了,如果哪位大神看到,求指点:

    1. 华为测试平台结果显示格式错误,本人找不到什么错误。

    #include<iostream> #include<string> #include<vector> using namespace std; struct file { string fileName; string lineNo; int count; }; void Reverse(string &inStr) { //翻转字符串 int i = 0; int j = inStr.size() - 1; char tmp = ' '; while (i < j) { tmp = inStr[i]; inStr[i] = inStr[j]; inStr[j] = tmp; i++; j--; } } void Calculate(string inStr, vector<file> &res) { int i = inStr.size()-1,j = 0; string lineNo = ""; string fileName = ""; bool flag = false; for (; i >= 0; i--) { if (inStr[i] == ' ') { i--; break; } lineNo += inStr[i]; } for (; i >= 0; i--,j++) { if (inStr[i] == '\\'||j >= 16) { break; } fileName += inStr[i]; } //翻转字符串 Reverse(fileName); Reverse(lineNo); for (i = 0; i < res.size(); i++) { if (res[i].fileName == fileName && res[i].lineNo == lineNo) { res[i].count++; flag = true; break; } } if (!flag) { file t; t.fileName = fileName; t.lineNo = lineNo; t.count = 1; res.push_back(t); } } int main() { string inStr = ""; vector<file> res; while (getline(cin, inStr)) { Calculate(inStr, res); } int i = 0; if (res.size() > 8) { i = res.size() - 8; } for (; i < res.size(); i++) { cout << res[i].fileName << " " << res[i].lineNo << " " << res[i].count << endl; } return 0; } 2.通过代码

    #include<iostream> #include<string> #include<vector> using namespace std; struct error { string filefullname; string filename; string lineno; int count; } ; typedef error Error; int main() { vector<Error> result; Error temp; string ss; string filepath; int number = 0; bool flag=0; while (cin >> filepath >> temp.lineno) { number++; temp.count = 1; ss = filepath.substr(filepath.find_last_of("\\")+1, filepath.length()); temp.filefullname = ss; if (ss.length() > 16) { temp.filename = ss.substr(ss.length()-16); } else { temp.filename = ss; } for (vector<Error>::iterator iter = result.begin(); iter != result.end(); iter++) { if ((*iter).filefullname == temp.filefullname && (*iter).lineno == temp.lineno) { (*iter).count++; flag = 1; break; } } if (!flag) { result.push_back(temp); } flag = 0; } if (result.size() <= 8) { for (int i = 0; i < result.size(); i++) cout << result[i].filename << " " << result[i].lineno << " " << result[i].count << endl; } else { for (int i = result.size() - 8; i < result.size(); i++) cout << result[i].filename << " " << result[i].lineno << " " << result[i].count << endl; } return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-1312632.html
    最新回复(0)