func magicalString(n int) int { if n <= 1 { return n } l, pre, cnt := 3, 2, 1 queue := []int{2} for l < n { inc := queue[0] queue = queue[1:] pre = 3 - pre for i := 0; i < inc && l < n; i++ { queue = append(queue, pre) l++ if pre == 1 { cnt++ } } } return cnt }