题目
这是星期三HW机试的第一道原题,而机试满分600分,通过只要求100分。
这个题目借助栈,很容易直接写出来
结果
代码
和机试不同的是,牛客上的要去处理输入输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| func reverseParentheses(s string) string { var stack []rune
for _, ch := range s { if ch == ')' { var buf bytes.Buffer for { top := stack[len(stack)-1] stack = stack[:len(stack)-1] if top == '(' { stack = append(stack, unzip(buf.String())...) break } else { buf.WriteRune(top) } } } else { stack = append(stack, ch) } } return string(stack) }
func unzip(s string) (arr []rune) { for _, v := range s { arr = append(arr, v) } return }
|
复杂度
时间复杂度:O(n)
空间复杂度:O(n)