标签:
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.
本题每次输出是下次的输入,第一次输入为‘1’。每次统计各个数字的字数,然后按照数量+数字的形式转化为string类型。时间:4ms。代码如下:
class Solution { public: string countAndSay(string n) { string str = ""; char s = ‘-‘; int count = 0; for (string::const_iterator iter = n.begin(); iter != n.end(); ++iter){ if (s == ‘-‘){ s = *iter; count++; } else if (s == *iter) count++; else{ str += ‘0‘ + count; count = 1; str += s; s = *iter; } } str += ‘0‘ + count; str += s; return str; } string countAndSay(int n) { if (n <= 0) return ""; string ret = "1"; while (n-- > 1) ret = countAndSay(ret); return ret; } };
标签:
原文地址:http://www.cnblogs.com/Scorpio989/p/4581912.html