題意:
定義一種迭代,1, 11, 21, 1211, 111221, ...,比如1211 -> 111221表示1211從左往右讀爲1個1、1個2、2個1,求迭代n輪的結果。
思路:
用string暴力模擬迭代過程,不推薦迭代計數x個y這種方式,因爲x>9的時候會變成2個數字,用string更好處理。
代碼:
class Solution {
public:
string countAndSay(int n) {
string s = "1";
while (--n) {
stringstream ss;
int cnt = 1;
for (int i = 1; i < s.size(); ++i) {
if (s[i] != s[i - 1]) {
ss << cnt << s[i - 1];
cnt = 1;
} else {
++cnt;
}
}
ss << cnt << s[s.size() - 1];
s = ss.str();
}
return s;
}
};