Advertisement
Huxulm

LC-305C

Aug 13th, 2022
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.68 KB | None | 0 0
  1. // 输入:pattern = "IIIDIDDD"
  2. // 输出:"123549876"
  3. func smallestNumber(pat string) ( string) {
  4. // 升用最小的升, 降用最小的降
  5. n := len(pat)
  6. ans := strings.Builder{}
  7. q := []byte{'1', '2', '3', '4', '5', '6', '7', '8', '9'}
  8. for i := 0; i < n; i++ {
  9. c := pat[i]
  10. if c == 'I' {
  11. ans.WriteByte(q[0])
  12. q = q[1:]
  13. } else {
  14. cnt := 1
  15. j := i
  16. for ; j < n-1 && pat[j] == pat[j+1]; j++ { cnt++ }
  17. for t := cnt; t > 0; t-- {
  18. ans.WriteByte(q[0+t])
  19. }
  20. q = append(append([]byte{}, q[0]), q[cnt+1:]...)
  21. i = j
  22. }
  23. }
  24. ans.WriteByte(q[0])
  25. return ans.String()
  26. }
  27.  
  28. func min(x, y int) int {
  29. if x < y { return x } else { return y }
  30. }
  31.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement