Содержание

38. Count and Say

Задача

Последовательность count-and-say это последовательность целых чисел:

1.     1
2.     11
3.     21
4.     1211
5.     111221

1 читаетс как “одна единицы” или 11. 11 читается как “две единицы” или 21. 21читается как “одна двойка, одна единица” или 1211.

пример 1

Input: 1
Output: "1"
Explanation: This is the base case.

пример 2

Input: 4
Output: "1211"
Explanation: For n = 3 the term was "21" in which we have two groups "2" and "1", "2" can be read as "12" which means frequency = 1 and value = 2, the same way "1" is read as "11", so the answer is the concatenation of "12" and "11" which is "1211".

Решение

Считать похожие элементы

func countAndSay(n int) string {
    res := "1"
    for idx:=2;idx<=n;idx++ {
        count:=1
        cur:=res[0]
        tmp:=""
        for jdx:=1;jdx<len(res);jdx++ {
            if res[jdx]==cur {
                count++
            } else {
                tmp =tmp+strconv.Itoa(count)+string(cur)
                count=1
                cur=res[jdx]
            }
        }
        tmp =tmp+strconv.Itoa(count)+string(cur)
        res = tmp
    }
    
    return res
}