本文共 1465 字,大约阅读时间需要 4 分钟。
原文地址:
版本号是用来识别软件产品状态的字符串,一个版本号看起来像a.b.c.d,这里的a,b等都是数字,所以版本号是数字用点分开的字符串。版本号一般是从最大到最小这么个层级表示的(这里a是最大的,d是最小的)。
在这个问题中,我们已知两个版本号,然后我们通过比较得出哪个是最近的版本号(也就是说哪个版本号更小)。【译者注:这里貌似跟我没一般的版本号规则有点差异,我们一般是数字越大,版本越新,不过随便了,这里的重点不是大小与新旧的关系】
例如,如果V1 = “1.0.31”V2 = “1.0.27”那么V2版本是最新的(或更小) 因为V2 < V1
因为有‘.’,所以我们不能拿出来就直接比较,但是我们可以比较它们的数字部分,然后看看哪个版本是最新的。下面代码的实现方法是遍历这个字符串,分割数字部分并进行比较,如果相等,那就再去看下一个数字部分,直到比出不想等的部分,否则的话就标为相同。
下面的代码实现的是比较两个版本号,如果有多个版本号的话,下面的方法可以用于版本号排序的比较方法,然后就能把所有的版本号都排个序。
// C/C++ program to compare two version number#includeusing namespace std;// Method to compare two versions. Returns 1 if v2 is// smaller, -1 if v1 is smaller, 0 if equalint versionCompare(string v1, string v2){ // vnum stores each numeric part of version int vnum1 = 0, vnum2 = 0; // loop untill both string are processed for (int i=0,j=0; (i vnum2) return 1; if (vnum2 > vnum1) return -1; // if equal, reset variables and go for next numeric // part vnum1 = vnum2 = 0; i++; j++; } return 0;}// Driver method to check above comparison functionint main(){ string version1 = "1.0.3"; string version2 = "1.0.7"; if (versionCompare(version1, version2) < 0) cout << version1 << " is smaller\n"; else if (versionCompare(version1, version2) > 0) cout << version2 << " is smaller\n"; else cout << "Both version are equal\n"; return 0;}
输出:
1.0.3 is smaller
转载地址:http://owhii.baihongyu.com/