< Summary

Information
Class: LeetCode.Algorithms.CompareVersionNumbers.CompareVersionNumbersIterative
Assembly: LeetCode
File(s): D:\a\LeetCode-CS\LeetCode-CS\source\LeetCode\Algorithms\CompareVersionNumbers\CompareVersionNumbersIterative.cs
Line coverage
100%
Covered lines: 26
Uncovered lines: 0
Coverable lines: 26
Total lines: 62
Line coverage: 100%
Branch coverage
100%
Covered branches: 12
Total branches: 12
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
CompareVersion(...)100%1212100%

File(s)

D:\a\LeetCode-CS\LeetCode-CS\source\LeetCode\Algorithms\CompareVersionNumbers\CompareVersionNumbersIterative.cs

#LineLine coverage
 1// --------------------------------------------------------------------------------
 2// Copyright (C) 2025 Eugene Eremeev (also known as Yevhenii Yeriemeieiv).
 3// All Rights Reserved.
 4// --------------------------------------------------------------------------------
 5// This software is the confidential and proprietary information of Eugene Eremeev
 6// (also known as Yevhenii Yeriemeieiv) ("Confidential Information"). You shall not
 7// disclose such Confidential Information and shall use it only in accordance with
 8// the terms of the license agreement you entered into with Eugene Eremeev (also
 9// known as Yevhenii Yeriemeieiv).
 10// --------------------------------------------------------------------------------
 11
 12namespace LeetCode.Algorithms.CompareVersionNumbers;
 13
 14/// <inheritdoc />
 15public class CompareVersionNumbersIterative : ICompareVersionNumbers
 16{
 17    /// <summary>
 18    ///     Time complexity - O(max(n,m)), where n and m are the lengths of version1 and version2 respectively
 19    ///     Space complexity - O(k+l), where k and l are the numbers of segments in the version strings
 20    /// </summary>
 21    /// <param name="version1"></param>
 22    /// <param name="version2"></param>
 23    /// <returns></returns>
 24    public int CompareVersion(string version1, string version2)
 825    {
 826        var version1Array = version1.Split('.');
 827        var version2Array = version2.Split('.');
 28
 829        var i = 0;
 30
 12231        while (i < version1Array.Length || i < version2Array.Length)
 11832        {
 11833            var version1Number = 0;
 34
 11835            if (i < version1Array.Length)
 1136            {
 1137                version1Number = int.Parse(version1Array[i]);
 1138            }
 39
 11840            var version2Number = 0;
 41
 11842            if (i < version2Array.Length)
 11843            {
 11844                version2Number = int.Parse(version2Array[i]);
 11845            }
 46
 11847            if (version1Number > version2Number)
 148            {
 149                return 1;
 50            }
 51
 11752            if (version1Number < version2Number)
 353            {
 354                return -1;
 55            }
 56
 11457            i++;
 11458        }
 59
 460        return 0;
 861    }
 62}