首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

LeetCode 比較版本號 - 字符串分割與逐段比較

     編輯:關於C++

問題描述

比較兩個版本號 version1 和 version2。版本號由數字和點組成,如 "1.2.3"。比較規則:從左到右逐段比較數字大小,缺失段視為 0。返回 1(version1 大)、-1(version2 大)或 0(相等)。

解法:分割並逐段比較

  1. 用 split("\\.") 將版本號分割為字符串數組。
  2. 遍歷兩數組,將每段轉為整數比較。
  3. 若一數組較短,剩餘段視為 0 繼續比較。
  4. 若所有對應段相等,返回 0。

代碼實現(Java)

public class Solution {
    public int compareVersion(String version1, String version2) {
        String[] v1 = version1.split("\\.");
        String[] v2 = version2.split("\\.");
        int i = 0;
        while (i < v1.length || i < v2.length) {
            int n1 = i < v1.length ? Integer.parseInt(v1[i]) : 0;
            int n2 = i < v2.length ? Integer.parseInt(v2[i]) : 0;
            if (n1 > n2) return 1;
            if (n1 < n2) return -1;
            i++;
        }
        return 0;
    }
}

注意事項

  • 版本號段可能有前導零,Integer.parseInt 自動處理。
  • 長度不一時補 0 比較,避免 "1.0" 和 "1" 判斷不等。
  • 大數字段可能超出 int 範圍,實際題目限制較小,若需通用可用 BigInteger。

複雜度

時間 O(max(m,n)),空間 O(m+n) 存儲分割數組。可優化為雙指針原地解析,空間 O(1)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved