题意
对前一个数字字符串进行数字统计,第一个数为1
例如:
1
11:有1个1
21:有2个1
1211:有1个2和一个1
111221:有1个1,1个2,2个1
最后找出第n个数字字符串.
思路
较为简单,直接遍历寻找即可
代码
class Solution {
public:
string countAndSay(int n) {
string ans = "1";
n--;
while(n--){
ans = change(ans);
}
return ans;
}
private:
string change(string temp){
string ans = "";
size_t len = temp.length();
char pre = temp[0];
int cnt = 1;
for(int i = 1; i < len; i++){
if(temp[i] != pre){
ans += cnt + '0';
ans += pre;
cnt = 1;
pre = temp[i];
} else{
cnt++;
}
}
ans += cnt + '0';
ans += pre;
return ans;
}
};