< Summary

Information
Class: LeetCode.Algorithms.DifferentWaysToAddParentheses.DifferentWaysToAddParenthesesRecursive
Assembly: LeetCode
File(s): D:\a\LeetCode-CS\LeetCode-CS\source\LeetCode\Algorithms\DifferentWaysToAddParentheses\DifferentWaysToAddParenthesesRecursive.cs
Line coverage
96%
Covered lines: 25
Uncovered lines: 1
Coverable lines: 26
Total lines: 58
Line coverage: 96.1%
Branch coverage
84%
Covered branches: 11
Total branches: 13
Branch coverage: 84.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
DiffWaysToCompute(...)84.61%131396.15%

File(s)

D:\a\LeetCode-CS\LeetCode-CS\source\LeetCode\Algorithms\DifferentWaysToAddParentheses\DifferentWaysToAddParenthesesRecursive.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.DifferentWaysToAddParentheses;
 13
 14/// <inheritdoc />
 15public class DifferentWaysToAddParenthesesRecursive : IDifferentWaysToAddParentheses
 16{
 17    /// <summary>
 18    ///     Time complexity - O(3^n)
 19    ///     Space complexity - O(3^n)
 20    /// </summary>
 21    /// <param name="expression"></param>
 22    /// <returns></returns>
 23    public IList<int> DiffWaysToCompute(string expression)
 36124    {
 36125        var results = new List<int>();
 26
 36127        if (int.TryParse(expression, out var number))
 24128        {
 24129            results.Add(number);
 30
 24131            return results;
 32        }
 33
 132634        for (var i = 0; i < expression.Length; i++)
 54335        {
 54336            if (char.IsDigit(expression[i]))
 36537            {
 36538                continue;
 39            }
 40
 17841            var leftResults = DiffWaysToCompute(expression[..i]);
 17842            var rightResults = DiffWaysToCompute(expression[(i + 1)..]);
 43
 97444            foreach (var leftResult in leftResults)
 22045            {
 48346                results.AddRange(rightResults.Select(rightResult => expression[i] switch
 48347                {
 10448                    '+' => leftResult + rightResult,
 13549                    '-' => leftResult - rightResult,
 2450                    '*' => leftResult * rightResult,
 051                    _ => 0
 48352                }));
 22053            }
 17854        }
 55
 12056        return results;
 36157    }
 58}