首页 > 代码库 > [LeetCode] Compare Version Numbers

[LeetCode] Compare Version Numbers

Compare two version numbers version1 and version1.
If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0.

You may assume that the version strings are non-empty and contain only digits and the . character.
The . character does not represent a decimal point and is used to separate number sequences.
For instance, 2.5 is not "two and a half" or "half way to version three", it is the fifth second-level revision of the second first-level revision.

Here is an example of version numbers ordering:

0.1 < 1.1 < 1.2 < 13.37

逐位比较就好了,把字符串转化成整型,这样就可以忽略前置0的影响了。

 1 class Solution { 2 public: 3     int compareVersion(string version1, string version2) { 4         int val1, val2; 5         int idx1 = 0, idx2 = 0; 6         while (idx1 < version1.length() || idx2 < version2.length()) { 7             val1 = 0;  8             while (idx1 < version1.length()) { 9                 if (version1[idx1] == .) {10                     ++idx1;11                     break;12                 }13                 val1 = val1 * 10 + (version1[idx1] - 0);14                 ++idx1;15             }16             val2 = 0; 17             while (idx2 < version2.length()) {18                 if (version2[idx2] == .) {19                     ++idx2;20                     break;21                 }22                 val2 = val2 * 10 + (version2[idx2] - 0);23                 ++idx2;24             }25             if (val1 > val2) return 1;26             if (val1 < val2) return -1;27         }28         return 0;29     }30 };

 

[LeetCode] Compare Version Numbers