1021. Remove Outermost Parentheses

El texto de la tarea se traduce del ruso para el idioma seleccionado. El código no cambia.

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

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

Ejemplo:

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

Output: "()()()"

C# solución

coincidente/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++ solución

borrador 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 solución

coincidente/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 solución

coincidente/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 solución

coincidente/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 результат, содержащий строку без крайних скобок из каждой примитивной строки.

😎

Vacantes para esta tarea

Se muestran vacantes activas con etiquetas coincidentes.

Todas las vacantes
Todavía no hay vacantes activas.