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

LeetCode 152 比較版本號 - 簡潔單次遍歷實現

     編輯:關於C++

問題描述

同 5407,比較兩個版本號字符串。

優化:雙指針原地解析

避免 split 產生數組開銷,直接在字符串上雙指針解析數字段。

代碼實現(Java)

public class Solution {
    public int compareVersion(String v1, String v2) {
        int i = 0, j = 0;
        while (i < v1.length() || j < v2.length()) {
            int x1 = 0, x2 = 0;
            while (i < v1.length() && v1.charAt(i) != '.') x1 = x1 * 10 + (v1.charAt(i++) - '0');
            while (j < v2.length() && v2.charAt(j) != '.') x2 = x2 * 10 + (v2.charAt(j++) - '0');
            if (x1 > x2) return 1;
            if (x1 < x2) return -1;
            i++; j++; // 跳過 '.'
        }
        return 0;
    }
}

優勢

  • 空間 O(1),無額外數組。
  • 單次遍歷,效率更高。
  • 自動處理前導零(數字累乘 10 加位)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved