1021. Remove Outermost Parentheses
На예제, "", "()", "(" + A + ")" или A + B, где A и B - допустимые строки со скобками, а + означает объединение строк. Все допустимые строки со скобками - "", "()", "(())()" и "(()(())".
Допустимая 문자열 со скобками s является примитивной, если она непустая и не существует способа разбить ее на s = A + B, причем A и B - непустые допустимые строки со скобками. Если дана допустимая 문자열 со скобками s, рассмотрим ее примитивное разложение: s = P1 + P2 + ... + Pk, где Pi - примитивные допустимые строки со скобками. return s после удаления крайних скобок из каждой примитивной строки в примитивном разложении s.
예제:
Input: s = "(()())(())"
Output: "()()()"
C# 해법
매칭됨/원본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++ 해법
자동 초안, 제출 전 검토#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 해법
매칭됨/원본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 해법
매칭됨/원본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 해법
매칭됨/원본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
활성 채용 with overlapping task tags are 표시됨.