【Leetcode】165. Compare Version Numbers

題目地址:

https://leetcode.com/problems/compare-version-numbers/

給定兩個版本號,判斷大小。規定較舊的版本號小。

用兩個指針,每次解析出一個數字出來比較大小,如果不等,則返回Integer.compare()後的值,否則繼續遍歷。如果遍歷到了字符串最後,則置版本號爲00繼續比較。代碼如下:

public class Solution {
    public int compareVersion(String version1, String version2) {
    	// 解析出數字的起始和終點下標
        int i = 0, j = 0;
        while (i < version1.length() || j < version2.length()) {
            int u = i, v = j;
            while (u < version1.length() && version1.charAt(u) != '.') {
                u++;
            }
            
            while (v < version2.length() && version2.charAt(v) != '.') {
                v++;
            }
            
            // 先初始化兩個版本號爲0,如果未遍歷到末尾則解析出數字並賦值
            int a = 0, b = 0;
            if (u != i) {
                a = Integer.parseInt(version1.substring(i, u));
            }
            if (v != j) {
                b = Integer.parseInt(version2.substring(j, v));
            }
            
            if (a != b) {
                return Integer.compare(a, b);
            }
            i = u + 1;
            j = v + 1;
        }
        
        return 0;
    }
}

時間複雜度O(n)O(n),空間O(1)O(1)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章