比較版本號
阿新 • • 發佈:2021-09-01
題目連結:https://leetcode-cn.com/problems/compare-version-numbers/
題目描述:
給你兩個版本號 version1 和 version2 ,請你比較它們。
版本號由一個或多個修訂號組成,各修訂號由一個 '.' 連線。每個修訂號由 多位數字 組成,可能包含 前導零 。每個版本號至少包含一個字元。修訂號從左到右編號,下標從 0 開始,最左邊的修訂號下標為 0 ,下一個修訂號下標為 1 ,以此類推。例如,2.5.33 和 0.1 都是有效的版本號。
比較版本號時,請按從左到右的順序依次比較它們的修訂號。比較修訂號時,只需比較 忽略任何前導零後的整數值 。也就是說,修訂號 1 和修訂號 001 相等 。如果版本號沒有指定某個下標處的修訂號,則該修訂號視為 0 。例如,版本 1.0 小於版本 1.1 ,因為它們下標為 0 的修訂號相同,而下標為 1 的修訂號分別為 0 和 1 ,0 < 1 。
返回規則如下:
如果version1>version2返回1,
如果version1<version2 返回 -1,
除此之外返回 0。
題解:
class Solution { public: int compareVersion(string version1, string version2) { int i = 0, j = 0; int len1 = version1.size(); int len2 = version2.size(); while(i < len1 || j < len2) { int num1 = 0; for(; i < len1 && version1[i] != '.'; i++) { num1 += num1 * 10 + version1[i] - '0'; //將字元轉為數字,去掉前導0 } i++; //跳過'.' int num2 = 0; for(; j < len2 && version2[j] != '.'; j++) { num2 += num2 * 10 + version2[j] - '0'; } j++; //跳過'.' if(num1 != num2) return num1 > num2 ? 1 : -1; } return 0; } };