1021. Remove Outermost Parentheses

Văn bản bài toán được dịch từ tiếng Nga theo ngôn ngữ giao diện. Mã không thay đổi.

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

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

Ví dụ:

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

Output: "()()()"

C# lời giải

đã khớp/gố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++ lời giải

bản nháp tự động, xem lại trước khi gửi
#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ời giải

đã khớp/gốc
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ời giải

đã khớp/gốc
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ời giải

đã khớp/gốc
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

việc làm đang hoạt động with overlapping task tags are đã hiển thị.

Tất cả việc làm
Chưa có việc làm đang hoạt động.