1021. Remove Outermost Parentheses
На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/originalpublic 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/originalpublic 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/originalclass 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/originalfunc 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.