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
题意非常明白,就是按照version比较规则来比较。
自己没怎么想,看了别人的解法。
碰到‘.’之前一直累加数,碰到'.'进行比较,直至字符串结束。
字符串转数字s[i]-'0'。
就没有什么难点了。
1 class Solution { 2 public: 3 4 int compareVersion(string version1, string version2) { 5 int val1=0,val2=0; 6 int len1=version1.length(); 7 int len2=version2.length(); 8 int i=0,j=0; 9 10 while(i<len1||j<len2){ 11 val1=0;val2=0; 12 while(i<len1){ 13 if(version1[i]=='.') {i++;break;} 14 else val1=val1*10+version1[i++]-'0';} 15 while(j<len2){ 16 if(version2[j]=='.') {j++;break;} 17 else val2=val2*10+version2[j++]-'0';} 18 19 if(val1>val2) return 1; 20 if(val1<val2) return -1; 21 } 22 return 0; 23 24 } 25 };