標籤:c++ leetcode 演算法
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
思路:每次比較小數點之前的數,看能不能分出伯仲。就是比較“版本號碼”大小,給定的版本號碼version1和version2是字串類型的,當version1>version2的時候,返回1,反之返回-1。
這道題屬於細節處理題,除了字串處理繁瑣一點之外沒有什麼。
解題思路:先分別將version1、version2字串按‘.‘分割成多個子串,每個子串轉化成整型存入容器。最後再比較兩個容器中對應位置的數的大小。當然需要考慮它們長度不同的情況。
注意點:
(1)version的形式:10.23.1、01.23、1.2.3.4....諸如
int compareVersion(string& s1, string& s2) { int i=0,j=0; int temp1,temp2; while(i<s1.length() && j<s2.length()) { temp1=0; temp2=0; for(;i<s1.length();i++) if(s1[i]!='.') temp1 = temp1*10 + (s1[i]-'0'); for(;j<s2.length();j++) if(s2[j]!='.') temp2 = temp2*10 + (s2[j]-'0'); if(temp1> temp2) return 1; else if(temp1<temp2) return -1; else { i++; j++; } } if(i>=s1.length() && j< s2.length()) return -1; if(i<s1.length() && j>=s2.length()) return 1; if(i>=s1.length() && j>=s2.length()) return 0;}
Compare Version Numbers--LeetCode