0%

LeetCode-1190

题目

1190. 反转每对括号间的子串

这是星期三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)