题解 | #完成括号匹配#
完成括号匹配
https://www.nowcoder.com/practice/fe8d6a1b88af4ba6b4dbb10972059040
package main
import (
"fmt"
)
func main() {
var s string
for {
n, _ := fmt.Scan(&s)
if n == 0 {
break
} else {
fmt.Printf("%s",process(s))
}
}
}
func process(s string)string{
cur := 0
rev := 0
// 遍历整个字符串
for i:=0;i<len(s);{
if s[i] == '['{
cur ++
}else {
cur --
}
if cur < 0 {
rev ++
cur = 0
}
i++
}
// 建立一个字符数组
strArr := make([]byte,len(s)+rev+cur)
for i:=0 ;i<len(strArr);i++ {
if i < rev {
strArr[i] = '['
}else if i<len(s)+rev {
strArr[i] = s[i-rev]
}else {
strArr[i] = ']'
}
}
return string(strArr)
}
用cur统计多余的'[',用rev统计多余的']',然后再在前面加上rev个'[',在后面加上cur个'['
查看8道真题和解析