The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, …
1is read off as"one 1"or11.11is read off as"two 1s"or21.21is read off as"one 2, thenone 1"or1211.
Given an integern, generate thenthsequence.
Note: The sequence of integers will be represented as a string.
class Solution {public:string countSay(string &str){str.append("0");stringstream ss;int count = 0;char temp = str[0];for(int i = 0; i < str.size(); i++){if(str[i] == temp)count++;else{ss << count << temp;count = 1;temp = str[i];}}return ss.str();}string countAndSay(int n) {string str = "1";for(int i = 1; i < n; i++){str = countSay(str);}return str;}};之所以末尾追加一个0,是为了防止当前字符串的末尾是连续的n个相同的数,导致判断到末尾时依旧执行count++但是不写入stream流里。
,经验是由痛苦中粹取出来的