题目要求:Count and Say
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 "on
e
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.
分析:
看了半天才看懂这道题……
代码如下:
class Solution { public: string countAndSay(int n) { string s("1"); while(--n) s = getNext(s); return s; } string getNext(const string &s){ stringstream ss; for(auto i = s.begin(); i != s.end(); ){ auto j = find_if(i, s.end(), bind1st(not_equal_to<char>(), *i)); //几个i,核心 ss << distance(i, j) << *i; i = j; } return ss.str(); } };