The count-and-say sequence is the sequence of integers with the first five terms as following:
1. 1
2. 11
3. 21
4. 1211
5. 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 where 1 ≤ n ≤ 30, generate the nth term of the count-and-say sequence.
Note: Each term of the sequence of integers will be represented as a string.
Example 1:
Input: 1
Output: "1"
Example 2:
Input: 4
Output: "1211"
题意
题意相当脑残,都没写清楚
就是n+1编号的字符串是以count-and-say形式复述编号n的字符串的结果
题解
1 class Solution { 2 public: 3 string countAndSay(int n) { 4 string ans = "1"; 5 n--; 6 while (n--) { 7 string tmp = ""; 8 int p = 0, l = ans.length(); 9 for (int i = 1; i < l; i++) { 10 if (ans[i - 1] != ans[i]) { 11 char ch = i - p + '0'; 12 tmp += ch; 13 ch = ans[i - 1]; 14 tmp += ch; 15 p = i; 16 } 17 } 18 char ch = l - p + '0'; 19 tmp += ch; 20 ch = ans[l - 1]; 21 tmp += ch; 22 ans = tmp; 23 } 24 return ans; 25 } 26 };