"""
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
"""
class Solution(object):
def compareVersion(self, version1, version2):
"""
:type version1: str
:type version2: str
:rtype: int
"""
versionList1 = version1.split('.');# split each version string by '.'
versionList2 = version2.split('.');
length1 = len(versionList1);
length2 = len(versionList2);
flag = 0;
for i in range(min(length1,length2)): # Compare the minimum length
flag = i;
if int(versionList1[i]) > int(versionList2[i]):
return 1;
elif int(versionList1[i]) < int(versionList2[i]):
return -1;
if flag == length1 - 1 and flag == length2 -1: # Scan the left part of version1 or version2
return 0;
elif flag == len(versionList1) - 1:
while(flag < length2 - 1):
flag += 1;
if int(versionList2[flag]) != 0:
return -1;
return 0;
elif flag == len(versionList2) -1 :
while(flag < length1 - 1):
flag += 1;
if int(versionList1[flag]) != 0:
return 1;
return 0;