Рубрики

Проверьте, содержит ли выражение лишнюю скобку или нет | Набор 2

Получив строку сбалансированного выражения, найдите, содержит ли она лишние скобки или нет. Набор круглых скобок является избыточным, если одно и то же подвыражение окружено ненужными или несколькими скобками. Выведите «Да», если избыточно, иначе «Нет».

Примечание. Выражение может содержать операторы «+» , «*» , «-» и «/» . Данное выражение является допустимым, и в нем нет пробелов.

Примечание: задача предназначена для решения в O (1) лишнего пространства.

Примеры:

Input: ((a+b))
Output: YES

((a+b)) can reduced to (a+b)

Input: (a+(b)/c)
Output: YES

(a+(b)/c) can reduced to (a+b/c) because b is surrounded by () which is redundant

Input: (a+b*(c-d))
Output: NO

(a+b*(c-d)) doesn’t have any redundant or multiple brackets

Подходить:
Идея очень похожа на идею, обсуждаемую в предыдущей статье, но здесь вместо стека мы считаем символ ( '+' , '*' , '-' и '/' ) и общее количество скобок, используемых в выражение.

Если количество скобок не равно количеству символов, функция вернет false.

C ++

// C ++ программа для проверки /
// лишние скобки в строке
#include <iostream>

using namespace std;

  
// Функция для проверки
// лишние скобки

bool IsRedundantBraces(string A)

{

    // количество признаков отсутствует

    int a = 0, b = 0;

    for (int i = 0; i < A.size(); i++) {

        if (A[i] == '('

            && A[i + 2] == ')')

            return 1;

        if (A[i] == '*'

            || A[i] == '+'

            || A[i] == '-'

            || A[i] == '/')

            a++;

        if (A[i] == '(')

            b++;

    }

    if (b > a)

        return 1;

    return 0;

}

  
// Функция драйвера

int main()

{

    string A = "(((a+b) + c) + d)";

    if (IsRedundantBraces(A)) {

        cout << "YES\n";

    }

    else {

        cout << "NO";

    }

}

Джава

// Java-программа для проверки
// лишние скобки в строке

class GFG 

{

      

    // Функция для проверки

    // лишние скобки

    static boolean IsRedundantBraces(String A) 

    

        // количество признаков отсутствует

        int a = 0, b = 0

        for (int i = 0; i < A.length(); i++) 

        

            if (A.charAt(i) == '(' &&   

                A.charAt(i + 2) == ')'

                return true

                  

            if (A.charAt(i) == '*' ||

                A.charAt(i) == '+' || 

                A.charAt(i) == '-' || 

                A.charAt(i) == '/'

                a++; 

            if (A.charAt(i) == '('

                b++; 

        

        if (b > a) 

            return true

        return false

    

      

    // Код драйвера

    public static void main (String[] args)

    

        String A = "(((a+b) + c) + d)"

        if (IsRedundantBraces(A)) 

        

            System.out.println("YES"); 

        

        else

        

            System.out.println("NO"); 

        

    

}

  
// Этот код предоставлен AnkitRai01

python3

# Python3 программа для проверки на /
# лишние скобки в строке

  
# Функция для проверки
# избыточные скобки

def IsRedundantBraces(A):

      

    # количество нет признаков

    a, b = 0, 0;

    for i in range(len(A)):

        if (A[i] == '(' and A[i + 2] == ')'):

            return True;

        if (A[i] == '*' or A[i] == '+' or 

            A[i] == '-' or A[i] == '/'):

            a += 1;

        if (A[i] == '('):

            b += 1;

      

    if (b > a):

        return True;

    return False;

  
Код водителя

if __name__ == '__main__':

    A = "(((a+b) + c) + d)";

    if (IsRedundantBraces(A)):

        print("YES");

      

    else:

        print("NO");

      
# Этот код предоставлен PrinciRaj1992

C #

// C # программа для проверки
// лишние скобки в строке

using System;

                      

class GFG 

{

      
// Функция для проверки
// лишние скобки

static bool IsRedundantBraces(string A)

{

    // количество признаков отсутствует

    int a = 0, b = 0;

    for (int i = 0; i < A.Length; i++) 

    {

        if (A[i] == '(' && A[i + 2] == ')')

            return true;

        if (A[i] == '*' || A[i] == '+' || 

            A[i] == '-' || A[i] == '/')

            a++;

        if (A[i] == '(')

            b++;

    }

    if (b > a)

        return true;

    return false;

}

      
// Код драйвера

public static void Main (String[] args)

    String A = "(((a+b) + c) + d)"

    if (IsRedundantBraces(A)) 

    

        Console.WriteLine("YES"); 

    

    else

    

        Console.WriteLine("NO"); 

    


}

  
// Этот код предоставлен PrinciRaj1992

Выход:

NO

Рекомендуемые посты:

Проверьте, содержит ли выражение лишнюю скобку или нет | Набор 2

0.00 (0%) 0 votes