перенаправление stdio & ldquo; fails & rdquo; при вызове waveInOpen, почему?

Я видел ответы здесь, и почти все хорошо. Тем не менее, я написал свою собственную версию, которая использует словарь для управления парными скобками и стекю для контроля порядка обнаруженных фигурных скобок. Я также написал для этого блог post .

Вот мой класс

public class FormulaValidator
{
    // Question: Check if a string is balanced. Every opening bracket is matched by a closing bracket in a correct position.
    // { [ ( } ] )

    // Example: "()" is balanced
    // Example: "{ ]" is not balanced.
    // Examples: "()[]{}" is balanced.
    // "{([])}" is balanced
    // "{ ( [ ) ] }" is _not_ balanced

    // Input: string, containing the bracket symbols only
    // Output: true or false
    public bool IsBalanced(string input)
    {
        var brackets = BuildBracketMap();
        var openingBraces = new Stack();
        var inputCharacters = input.ToCharArray();

        foreach (char character in inputCharacters)
        {
            if (brackets.ContainsKey(character))
            {
                openingBraces.Push(character);
            }

            if (brackets.ContainsValue(character))
            {
                var closingBracket = character;
                var openingBracket = brackets.FirstOrDefault(x => x.Value == closingBracket).Key;

                if (openingBraces.Peek() == openingBracket)
                    openingBraces.Pop();
                else
                    return false;
            }
        }

        return openingBraces.Count == 0;
    }

    private Dictionary BuildBracketMap()
    {
        return new Dictionary()
        {
            {'[', ']'},
            {'(', ')'},
            {'{', '}'}
        };
    }
}

1
задан Russ Schultz 16 January 2019 в 23:01
поделиться