摘要:注意因為方法輸入的是一個正則表達式所以不能直接用,而是要用,而的要轉(zhuǎn)義,所有要用代碼按照進行分割比對相應(yīng)的子串如果某個版本號更長,判斷其多余部分是否是,如果不是,則較長的較大,否則是一樣的。
Compare Version Numbers
迭代法 復(fù)雜度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
時間 O(N) 空間 O(N)
思路這題的難點在于幾個corner case:
1.0和1是一個版本,意味即使長度不一樣,也要檢查后面是否都是0
1.15要大于1.5,因為前者是第15個子版本,而后者是第5個
最簡單的方法就是用split方法按照.分割,然后比對相應(yīng)的每一個子串。
注意因為split方法輸入的是一個正則表達式所以不能直接用.,而是要用.,而java的要轉(zhuǎn)義,所有要用.
代碼public class Solution { public int compareVersion(String version1, String version2) { // 按照.進行分割 String[] v1 = version1.split("."); String[] v2 = version2.split("."); int i = 0; // 比對相應(yīng)的子串 for(; i < v1.length && i < v2.length; i++){ int val1 = Integer.parseInt(v1[i]); int val2 = Integer.parseInt(v2[i]); if(val1 < val2) return -1; if(val1 > val2) return 1; } // 如果某個版本號更長,判斷其多余部分是否是0,如果不是0,則較長的較大,否則是一樣的。 if(v2.length > v1.length){ for(; i < v2.length; i++){ int val = Integer.parseInt(v2[i]); if(val != 0) return -1; } } else if(v1.length > v2.length){ for(; i < v1.length; i++){ int val = Integer.parseInt(v1[i]); if(val != 0) return 1; } } return 0; } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/64593.html
摘要:題目要求也就是說,比較版本號。思路一利用通過方法將版本通過分隔開,然后將每一段版本從轉(zhuǎn)化為進行比較思路二自己實現(xiàn)轉(zhuǎn)化為自己實現(xiàn)將轉(zhuǎn)化為,可以通過循環(huán)的方式。這是一個基本的算法。 題目要求 Compare two version numbers version1 and version2. If version1 > version2 return 1, if version1 < ve...
摘要:首先找整數(shù)部分的坐標(biāo)段,和都指向初值,令和一直向后遍歷到小數(shù)點為止。然后用將的整數(shù)段轉(zhuǎn)化為數(shù)值,進行比較若結(jié)果為大于或小于關(guān)系,直接返回結(jié)果若結(jié)果為相等,進行小數(shù)部分的比較。 Problem Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 < v...
Problem 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 an...
Problem 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 an...
摘要:題目內(nèi)容比較不同的版本號,并根據(jù)大小返回,或。并提醒版本意思是第二代的第五次升級,反正不是數(shù)字上的的意思。代碼拆分兩個字符串這里用最大的長度作為循環(huán)范圍因為循環(huán)范圍是最大長度,所以缺的位置補復(fù)雜度分析,和分別是兩個字符串的長度。 題目內(nèi)容 比較不同的版本號,并根據(jù)大小返回-1,1或0。并提醒2.5版本意思是第二代的第五次升級,反正不是數(shù)字上的2.5的意思。 解決思路 直觀的想法是,找到...
閱讀 1349·2021-09-28 09:43
閱讀 4116·2021-09-04 16:41
閱讀 1918·2019-08-30 15:44
閱讀 3729·2019-08-30 15:43
閱讀 776·2019-08-30 14:21
閱讀 2037·2019-08-30 11:00
閱讀 3320·2019-08-29 16:20
閱讀 1923·2019-08-29 14:21