Comprobación De Paréntesis Equilibrados En Una Secuencia En C#

En este ejercicio, debe implementar una función que verifique si una secuencia de paréntesis está balanceada. Una secuencia de paréntesis se considera balanceada si cada paréntesis de apertura '(' tiene un paréntesis de cierre ')' coincidente y si están correctamente anidados en el orden correcto.

Por ejemplo:

- La secuencia "(()()(()))" es válida porque todos los paréntesis están correctamente balanceados y anidados.
- La secuencia "(((()" es incorrecta porque carece del paréntesis de cierre.

Se le proporcionará una cadena que contiene paréntesis, y la función deberá determinar si la secuencia es válida o no. Este ejercicio es ideal para practicar el uso de pilas o contadores, que son estructuras de datos esenciales para validar y balancear símbolos en cadenas.



Grupo

Gestión Dinámica de Memoria en C#

Objectivo

1. Implementa una función que tome una cadena de paréntesis como entrada.
2. Usa una pila o un contador para comprobar si los paréntesis están equilibrados.
3. Devuelve verdadero si los paréntesis están equilibrados y falso si no lo están.
4. Asegúrate de que cada paréntesis de apertura tenga su correspondiente paréntesis de cierre y de que estén correctamente anidados.
5. Prueba la función con diferentes secuencias de paréntesis para verificar su corrección.

En este ejercicio, necesitas implementar una función para comprobar si una secuencia de paréntesis de apertura y cierre está equilibrada.

Ejemplo de ejercicio en C#

 Copiar código C#
using System;
using System.Collections.Generic;

class BalancedParentheses
{
    // Function to check if the sequence of parentheses is balanced
    static bool IsBalanced(string sequence)
    {
        Stack stack = new Stack(); // Create a stack to hold opening parentheses

        // Loop through each character in the sequence
        foreach (char ch in sequence)
        {
            // If the character is an opening parenthesis, push it onto the stack
            if (ch == '(')
            {
                stack.Push(ch);
            }
            // If the character is a closing parenthesis
            else if (ch == ')')
            {
                // If the stack is empty, it means there's no matching opening parenthesis
                if (stack.Count == 0)
                {
                    return false; // Return false if the parentheses are not balanced
                }
                // Pop the top element from the stack as it matches the closing parenthesis
                stack.Pop();
            }
        }

        // If the stack is empty, all opening parentheses had matching closing parentheses
        return stack.Count == 0;
    }

    static void Main()
    {
        string sequence = "(()()(()))"; // Example valid sequence
        bool result = IsBalanced(sequence); // Check if the sequence is balanced

        // Display the result
        Console.WriteLine($"Sequence: {sequence}");
        Console.WriteLine($"Is the sequence balanced? {result}");

        sequence = "(((()"; // Example invalid sequence
        result = IsBalanced(sequence); // Check if the sequence is balanced

        // Display the result
        Console.WriteLine($"Sequence: {sequence}");
        Console.WriteLine($"Is the sequence balanced? {result}");
    }
}

 Output

Sequence: (()()(())))
Is the sequence balanced? True
Sequence: ((((
Is the sequence balanced? False

Comparte este ejercicio de C#

Practica más ejercicios C# de Gestión Dinámica de Memoria en C#

¡Explora nuestro conjunto de ejercicios de práctica de C#! Diseñados específicamente para principiantes, estos ejercicios te ayudarán a desarrollar una sólida comprensión de los fundamentos de C#. Desde variables y tipos de datos hasta estructuras de control y funciones simples, cada ejercicio está diseñado para desafiarte gradualmente a medida que adquieres confianza en la programación en C#..