Задача
Последовательность count-and-say
это последовательность целых чисел:
1
2
3
4
5
|
1. 1
2. 11
3. 21
4. 1211
5. 111221
|
1
читаетс как “одна единицы” или 11.
11
читается как “две единицы” или 21.
21
читается как “одна двойка, одна единица” или 1211.
пример 1
1
2
3
|
Input: 1
Output: "1"
Explanation: This is the base case.
|
пример 2
1
2
3
|
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".
|
Решение
Считать похожие элементы
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
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
}
|