Count and Say
Question
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.
Thoughts
其实就是找到如何处理这种字符串的规律,然后转换n-1次
Solution
class Solution:
# @param {int} n the nth
# @return {string} the nth sequence
def countAndSay(self, n):
# Write your code here
result = "1"
if not n or n == 1:
return result
#notice that it should be n-1, 1 is already 1 trans
for i in range(n-1):
result = self.getNextSeq(result)
return result
def getNextSeq(self, seq):
length = len(seq)
prefix = 1
nextSeq = ""
for j in range(length):
if j == 0:
cur = seq[j]
else:
if seq[j] == seq[j-1]:
prefix += 1
else:
nextSeq += str(prefix) + str(cur)
prefix = 1
cur = seq[j]
#add last sub sequence
nextSeq += str(prefix) + str(cur)
return nextSeq