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 "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.
分析:Count and Say的意思就是对于(n-1)th string,从左到右,count连续相同数字并且say,所以解决此问题的关键是得到第(n-1)个string,并且从左到右统计连续相同数字的个数并将结果存储在一个string中。代码如下:
1 class Solution { 2 public: 3 string countAndSay(int n) { 4 string result = "1"; 5 6 for(int i = 2; i <= n; i++){ 7 string tmp = ""; 8 int count = 0; 9 for(int j = 0; j < result.length(); j++){ 10 count++; 11 if(j + 1 == result.length() || result[j] != result[j+1]){//when next is end or next is not same as current character 12 tmp += std::to_string(count); 13 tmp.push_back(result[j]); 14 count = 0; 15 } 16 } 17 result = tmp; 18 } 19 20 return result; 21 } 22 };
浙公网安备 33010602011771号