The count-and-say sequence is the sequence of integers beginning as follows:
1, 11, 21, 1211, 111221, ...
1
is read off as "one 1"
or 11
.
11
is read off as "two 1s"
or 21
.
21
is read off as "one 2
, then one 1"
or 1211
.
Given an integer n, generate the nth sequence.
Note: The sequence of integers will be represented as a string.
主要是计数的逻辑。每一轮,遇到一个不同的字符时,就结束到该轮的计数。但是需要注意的是最后一轮的计数,因为遇到的是字符串src的结尾,所以需要强制结束这一轮的计数,就类似于编译原理词法分析最后的那个$符号的作用。
class Solution: def doCountAndSay(self, src): char = src[0] num = 0 result = "" for c in src: if char == c: num += 1 else: result += (str(num) + char) char = c num = 1 result += (str(num) + char) return result # @return a string def countAndSay(self, n): if 0 == n: return "" elif 1 == n: return "1" result = "1" # str is a keyword for i in range(1, n): result = self.doCountAndSay(result) return result