问题:
报数指的是,按照其中的整数的顺序进行报数,然后得到下一个数。如下所示:
1, 11, 21, 1211, 111221, ...
1
读作 "one 1"
-> 11
11
读作 "two 1s"
-> 21
21
读作 "one 2, then one 1"
-> 1211
给定一个整数 n
, 返回 第 n
个顺序。
样例:
样例 1:
输入:1 输出:"1"
样例 2:
输入:5 输出:"111221"
注意事项
整数的顺序将表示为一个字符串。
python:
class Solution:
"""
@param n: the nth
@return: the nth sequence
"""
def countAndSay(self, n):
# write your code here
if n == 1:
return "1"
lastOne = self.countAndSay(n-1)
temp = lastOne[0]
count = 0
result = ""
for i in range(len(lastOne)):
if lastOne[i] == temp:
count += 1
else:
result += str(count) + temp
temp = lastOne[i]
count = 1
result += str(count) + temp
return result
C++:
class Solution {
public:
/**
* @param n: the nth
* @return: the nth sequence
*/
string countAndSay(int n) {
// write your code here
if(n == 1)
{
return "1";
}
string lastOne = countAndSay(n-1);
char temp = lastOne[0];
int count = 0;
string result = "";
for(int i = 0; i<lastOne.size(); i++)
{
if(lastOne[i] == temp)
{
count++;
}else{
result = result + to_string(count) + temp;
temp = lastOne[i];
count = 1;
}
}
result = result + to_string(count) + temp;
return result;
}
};