Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 输入:pattern = "IIIDIDDD"
- // 输出:"123549876"
- func smallestNumber(pat string) ( string) {
- // 升用最小的升, 降用最小的降
- n := len(pat)
- ans := strings.Builder{}
- q := []byte{'1', '2', '3', '4', '5', '6', '7', '8', '9'}
- for i := 0; i < n; i++ {
- c := pat[i]
- if c == 'I' {
- ans.WriteByte(q[0])
- q = q[1:]
- } else {
- cnt := 1
- j := i
- for ; j < n-1 && pat[j] == pat[j+1]; j++ { cnt++ }
- for t := cnt; t > 0; t-- {
- ans.WriteByte(q[0+t])
- }
- q = append(append([]byte{}, q[0]), q[cnt+1:]...)
- i = j
- }
- }
- ans.WriteByte(q[0])
- return ans.String()
- }
- func min(x, y int) int {
- if x < y { return x } else { return y }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement