题解 | #比较版本号#
比较版本号
https://www.nowcoder.com/practice/2b317e02f14247a49ffdbdba315459e7
#include <string> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 比较版本号 * @param version1 string字符串 * @param version2 string字符串 * @return int整型 */ int compare(string version1, string version2) { // write code here int start1 = 0; int end1 = 0; int start2 = 0; int end2 = 0; int segment1 = 0; int segment2 = 0; while (true) { // 如果 version1 已经遍历结束 if (start1 >= version1.size()) { segment1 = 0; } // 如果 version1 还未遍历结束 else { while (version1[end1] != '.' && end1 < version1.size()) { end1++; } segment1 = std::stoi(version1.substr(start1, end1 - start1)); start1 = end1 + 1; end1 = start1; } // 如果 version2 已经遍历结束 if (start2 >= version2.size()) { segment2 = 0; } // 如果 version2 还未遍历结束 else { while (version2[end2] != '.' && end2 < version2.size()) { end2++; } segment2 = std::stoi(version2.substr(start2, end2 - start2)); start2 = end2 + 1; end2 = start2; } // 比较数据大小 if (segment1 > segment2) { return 1; }else if (segment1 < segment2) { return -1; } // 如果两个字符串的修订号都遍历结束,则无需再比较 if (start1 >= version1.size() && start2 >= version2.size()) { return 0; } } } };
在线编程练习 文章被收录于专栏
C++在线编程练习题解