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.
十天没做题了,赶快秒个小题练练手。
思路:就是数每种数字出现了几次。
string countAndSay(int n) { string s = "1"; while(--n) //从1开始计数 { string stmp; char c[10]; for(int i = 0; i < s.length(); ) { int count = 0; char cur = s[i]; while(i < s.length() && s[i] == cur) //数当前重复出现的数字 { count++; i++; } sprintf(c, "%d%d", count, cur - '0'); stmp += c; } s = stmp; } return s; }