Compare Version Numbers
Compare numbers version1 and version2.
If version1 > version2 return 1, if version1 < version2 return-1, otherwise ret Urn 0.
Assume that the version strings is non-empty and contain only digits and the . character.
The . character does not represent a, decimal point and was used to separate number sequences.
For instance, was not "both and 2.5 a half" or "half-to-version three", it is the fifth Second-level revision of the S Econd first-level revision.
Here are an example of version numbers ordering:
0.1 < 1.1 < 1.2 < 13.37
Credits:
Special thanks to @ts for adding this problem and creating all test cases.
will be '. ' Split fields are removed one by one for comparison.
classSolution { Public: intCompareversion (stringVersion1,stringVersion2) { intLen1 =version1.size (); intLen2 =version2.size (); intBegin1 =0; intBegin2 =0; intEnd1 =0; intEnd2 =0; while(End1! = len1 && End2! =len2) { //extract section in Version1 stringSEC1; while(End1! = len1 && Version1[end1]! ='.') End1++; if(End1 = =len1) Sec1=version1.substr (begin1); Else{SEC1= Version1.substr (Begin1, end1-begin1); Begin1= End1 +1; End1=begin1; } //extract section in Version2 stringsec2; while(End2! = len2 && Version2[end2]! ='.') End2++; if(End2 = =len2) sec2=version2.substr (begin2); Else{sec2= Version2.substr (begin2, end2-begin2); Begin2= End2 +1; End2=begin2; } //Compare SEC1 and Sec2 intNUM1 =atoi (Sec1.c_str ()); intnum2 =atoi (Sec2.c_str ()); if(Num1 >num2)return 1; if(Num1 <num2)return-1; } if(End1 = = Len1 && End2 = =len2)return 0; while(End1! =len1) {//Version1 remains stringSEC1; while(End1! = len1 && Version1[end1]! ='.') End1++; if(End1 = =len1) Sec1=version1.substr (begin1); Else{SEC1= Version1.substr (Begin1, end1-begin1); Begin1= End1 +1; End1=begin1; } intNUM1 =atoi (Sec1.c_str ()); if(Num1 >0) return 1; } while(End2! =len2) {//Version2 remains stringsec2; while(End2! = len2 && Version2[end2]! ='.') End2++; if(End2 = =len2) sec2=version2.substr (begin2); Else{sec2= Version2.substr (begin2, end2-begin2); Begin2= End2 +1; End2=begin2; } intnum2 =atoi (Sec2.c_str ()); if(Num2 >0) return-1; } return 0; }};
"Leetcode" 165. Compare Version Numbers