0038.外观数列

方法一:遍历扫描

时间复杂度 $O(n \times m)$,空间复杂度 $O(m)$,其中 m 表示返回串即第 n 个外观数列的长度。

func countAndSay(n int) string {
	ans := "1"
	for i := 0; i < n-1; i++ {
		t := ""
		for l, r := 0, 0; r < len(ans); {
			for r < len(ans) && ans[l] == ans[r] {
				r++
			}
			t += fmt.Sprintf("%d%c", r-l, ans[l])
			l = r
		}
		ans = t
	}
	return ans
}