📜  删除多余的括号后平衡字符串

📅  最后修改于: 2022-05-13 01:57:08.616000             🧑  作者: Mango

删除多余的括号后平衡字符串

给字符一个带有左括号和右括号的字符串。任务是从字符串中删除额外的括号并平衡它。
例子:

方法:

  • 开始从左到右遍历。
  • 检查当前索引处的元素是否是左括号“(”,然后打印该括号并增加计数。
  • 检查当前索引处的元素是否是右括号')',如果计数不等于零,则打印它并减少计数。
  • 检查字符串中当前索引处是否有除括号之外的任何元素,然后打印它。
  • 最后,如果计数不等于零,则打印 ')' 等于计数的数量以平衡字符串。

以下是上述方法的实现:

C++
// C++ implementation of above approach
#include 
using namespace std;
 
// Print balanced and remove
// extra brackets from string
void balancedString(string str)
{
    int count = 0, i;
    int n = str.length();
 
    // Maintain a count for opening brackets
    // Traversing string
    for (i = 0; i < n; i++) {
 
        // check if opening bracket
        if (str[i] == '(') {
 
            // print str[i] and increment count by 1
            cout << str[i];
            count++;
        }
 
        // check if closing bracket and count != 0
        else if (str[i] == ')' && count != 0) {
            cout << str[i];
 
            // decrement count by 1
            count--;
        }
 
        // if str[i] not a closing brackets
        // print it
        else if (str[i] != ')')
            cout << str[i];
    }
 
    // balanced brackets if opening brackets
    // are more then closing brackets
    if (count != 0)
        // print remaining closing brackets
        for (i = 0; i < count; i++)
           cout << ")";
}
 
// Driver code
int main()
{
 
    string str = "gau)ra)v(ku(mar(rajput))";
     balancedString(str);
 
    return 0;
}


Java
// Java implementation of above approach
class GFG {
 
// Print balanced and remove
// extra brackets from string
public static void balancedString(String str)
{
    int count = 0, i;
    int n = str.length();
 
    // Maintain a count for opening brackets
    // Traversing string
    for (i = 0; i < n; i++) {
 
        // check if opening bracket
        if (str.charAt(i) == '(') {
 
            // print str.charAt(i) and increment count by 1
            System.out.print(str.charAt(i));
            count++;
        }
 
        // check if closing bracket and count != 0
        else if (str.charAt(i) == ')' && count != 0) {
            System.out.print(str.charAt(i));
 
            // decrement count by 1
            count--;
        }
 
        // if str.charAt(i) not a closing brackets
        // print it
        else if (str.charAt(i) != ')')
            System.out.print(str.charAt(i));
    }
 
    // balanced brackets if opening brackets
    // are more then closing brackets
    if (count != 0)
        // print remaining closing brackets
        for (i = 0; i < count; i++)
            System.out.print(")");
}
 
// Driver Method
public static void main(String args[])
{
    String str = "gau)ra)v(ku(mar(rajput))";
    balancedString(str);
}
}


Python3
# Python implementation of above approach
 
# Print balanced and remove
# extra brackets from string
def balancedString(str):
    count, i = 0, 0
    n = len(str)
 
    # Maintain a count for opening
    # brackets Traversing string
    for i in range(n):
 
        # check if opening bracket
        if (str[i] == '('):
 
            # print str[i] and increment
            # count by 1
            print(str[i], end = "")
            count += 1
             
        # check if closing bracket and count != 0
        elif (str[i] == ')' and count != 0):
            print(str[i], end = "")
 
            # decrement count by 1
            count -= 1
             
        # if str[i] not a closing brackets
        # print it
        elif (str[i] != ')'):
            print(str[i], end = "")
             
    # balanced brackets if opening brackets
    # are more then closing brackets
    if (count != 0):
         
        # print remaining closing brackets
        for i in range(count):
            print(")", end = "")
 
# Driver code
if __name__ == '__main__':
    str = "gau)ra)v(ku(mar(rajput))"
    balancedString(str)
 
# This code is contributed by 29AjayKumar


C#
// C# implementation of above approach
using System;
 
class GFG
{
 
// Print balanced and remove
// extra brackets from string
public static void balancedString(String str)
{
    int count = 0, i;
    int n = str.Length;
 
    // Maintain a count for opening
    // brackets Traversing string
    for (i = 0; i < n; i++)
    {
 
        // check if opening bracket
        if (str[i] == '(')
        {
 
            // print str[i] and increment
            // count by 1
            Console.Write(str[i]);
            count++;
        }
 
        // check if closing bracket
        // and count != 0
        else if (str[i] == ')' && count != 0)
        {
            Console.Write(str[i]);
 
            // decrement count by 1
            count--;
        }
 
        // if str[i] not a closing
        // brackets print it
        else if (str[i] != ')')
            Console.Write(str[i]);
    }
 
    // balanced brackets if opening
    // brackets are more then closing
    // brackets
    if (count != 0)
     
        // print remaining closing brackets
        for (i = 0; i < count; i++)
            Console.Write(")");
}
 
// Driver Code
public static void Main()
{
    String str = "gau)ra)v(ku(mar(rajput))";
    balancedString(str);
}
}
 
// This code is contributed
// by PrinciRaj1992


PHP


Javascript


输出:
gaurav(ku(mar(rajput)))