首页 > 技术文章 > 【Leetcode】【Easy】Compare Version Numbers

huxiao-tee 2015-08-26 09:48 原文

Compare two version numbers version1 and version2.
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

 

解题:

题目的意思是,比较版本号的大小,2版本比1版本大,而2.10版本比2.5版本大;

分别取出小数点前和小数点后的数字做比较;

代码:

 1 class Solution {
 2 public:
 3     int compareVersion(string version1, string version2) {
 4         int len1 = version1.size(); 
 5         int len2 = version2.size();
 6         int num1 = 0;
 7         int num2 = 0;
 8         int i = 0; 
 9         int j = 0;
10         while(i < len1 || j < len2) {
11             while (i < len1 && version1[i] != '.') {
12                 num1 = num1 * 10 + (version1[i] - '0');
13                 i++;
14             }
15 
16             while (j < len2 && version2[j] != '.') {
17                 num2 = num2 * 10 + (version2[j] - '0');
18                 j++;
19             }
20 
21             if(num1 > num2) 
22                 return 1;
23             else if (num1 < num2) 
24                 return -1;
25 
26             num1 = 0;
27             num2 = 0;
28             i++;
29             j++;
30         }
31 
32         return 0;
33     }
34 };

 


推荐阅读