1021. Remove Outermost Parentheses

O texto da tarefa é traduzido do russo para o idioma selecionado. O código permanece sem alterações.

НаExemplo, "", "()", "(" + A + ")" или A + B, где A и B - допустимые строки со скобками, а + означает объединение строк. Все допустимые строки со скобками - "", "()", "(())()" и "(()(())".

Допустимая string со скобками s является примитивной, если она непустая и не существует способа разбить ее на s = A + B, причем A и B - непустые допустимые строки со скобками. Если дана допустимая string со скобками s, рассмотрим ее примитивное разложение: s = P1 + P2 + ... + Pk, где Pi - примитивные допустимые строки со скобками. return s после удаления крайних скобок из каждой примитивной строки в примитивном разложении s.

Exemplo:

Input: s = "(()())(())"

Output: "()()()"

C# solução

correspondente/original
public class Solution {
    public string RemoveOuterParentheses(string s) {
        var result = new StringBuilder();
        int level = 0;
        
        foreach (char c in s) {
            if (c == '(') {
                if (level > 0) {
                    result.Append(c);
                }
                level++;
            } else {
                level--;
                if (level > 0) {
                    result.Append(c);
                }
            }
        }
        
        return result.ToString();
    }
}

C++ solução

rascunho automático, revisar antes de enviar
#include <bits/stdc++.h>
using namespace std;

// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
    public string RemoveOuterParentheses(string s) {
        var result = new StringBuilder();
        int level = 0;
        
        foreach (char c in s) {
            if (c == '(') {
                if (level > 0) {
                    result.Append(c);
                }
                level++;
            } else {
                level--;
                if (level > 0) {
                    result.Append(c);
                }
            }
        }
        
        return result.ToString();
    }
}

Java solução

correspondente/original
public class Solution {
    public String removeOuterParentheses(String s) {
        StringBuilder result = new StringBuilder();
        int level = 0;
        
        for (char c : s.toCharArray()) {
            if (c == '(') {
                if (level > 0) {
                    result.append(c);
                }
                level++;
            } else {
                level--;
                if (level > 0) {
                    result.append(c);
                }
            }
        }
        
        return result.toString();
    }
}

JavaScript solução

correspondente/original
class Solution {
    removeOuterParentheses(s) {
        let result = '';
        let level = 0;
        
        for (const char of s) {
            if (char === '(') {
                if (level > 0) {
                    result += char;
                }
                level++;
            } else {
                level--;
                if (level > 0) {
                    result += char;
                }
            }
        }
        
        return result;
    }
}

Go solução

correspondente/original
func removeOuterParentheses(s string) string {
    var result []rune
    level := 0
    
    for _, char := range s {
        if char == '(' {
            if level > 0 {
                result = append(result, char)
            }
            level++
        } else {
            level--
            if level > 0 {
                result = append(result, char)
            }
        }
    }
    
    return string(result)
}

Algorithm

Инициализация переменных:

Создайте пустую строку для хранения результата.

Используйте счетчик для отслеживания уровня вложенности скобок..

Обработка строки:

Итерируйте по каждому символу строки.

Если встречаете (, увеличивайте счетчик уровня вложенности. Если уровень вложенности больше 1, добавьте ( в результат.

Если встречаете ), уменьшайте счетчик уровня вложенности. Если уровень вложенности больше 0 перед уменьшением, добавьте ) в результат.

Возврат результата:

return результат, содержащий строку без крайних скобок из каждой примитивной строки.

😎

Vacancies for this task

vagas ativas with overlapping task tags are mostradas.

Todas as vagas
Ainda não há vagas ativas.