题解 | #完成括号匹配#
完成括号匹配
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个'['