1021. Remove Outermost Parentheses

Der Aufgabentext wird für die gewählte Sprache aus dem Russischen übersetzt. Code bleibt unverändert.

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

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

Beispiel:

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

Output: "()()()"

C# Lösung

zugeordnet/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++ Lösung

Auto-Entwurf, vor dem Einreichen prüfen
#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 Lösung

zugeordnet/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 Lösung

zugeordnet/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 Lösung

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

😎

Stellen zu dieser Aufgabe

aktive Stellen with overlapping task tags are angezeigt.

Alle Stellen
Es gibt noch keine aktiven Stellen.