DDSA Solutions

165. Compare Version Numbers

Time: O(n)
Space: O(n)
Advertisement

Intuition

Split both version strings by "." and compare corresponding integer components. If one version has fewer parts, treat missing parts as 0.

Algorithm

  1. 1Split v1 and v2 by ".".
  2. 2Iterate up to max(len1, len2). Parse each part as int (0 if missing).
  3. 3If part1 < part2 return -1. If part1 > part2 return 1.
  4. 4Return 0 if all parts equal.

Example Walkthrough

Input: version1 = "1.01", version2 = "1.001"

  1. 1.Part 0: 1 vs 1 - equal. Part 1: 01->1 vs 001->1 - equal.
  2. 2.Return 0.

Output: 0

Common Pitfalls

  • Parse as int to strip leading zeros - "01" and "1" are the same version component.
165.cs
C#
// Approach: Split both strings by '.', parse integer segments, compare
// pair-by-pair padding the shorter version with zeros.
// Time: O(n) Space: O(n)

public class Solution
{
    public int CompareVersion(string version1, string version2)
    {
        string[] v1 = version1.Split('.');
        string[] v2 = version2.Split('.');

        int len = Math.Max(v1.Length, v2.Length);

        for (int i = 0; i < len; i++)
        {
            int val1 = i < v1.Length ? Int32.Parse(v1[i]) : 0;
            int val2 = i < v2.Length ? Int32.Parse(v2[i]) : 0;

            int compare = val1.CompareTo(val2);

            if (compare != 0)
                return compare;
        }

        return 0;
    }
}
Advertisement
Was this solution helpful?