这个是看了提示以后做出来的,主要是n是n-1的解释,那么明显就是一个递归的过程。同时在数重复数的时候,用了快慢指针。i,j
for 循环嵌套。
class Solution {
public:
string countAndSay(int n) {
string out = "";
if(n == 1)
return "1";
string input_string = countAndSay(n-1);
int j = 0; // 慢指针。
for(int i = 0; i < input_string.length(); i++){
for( j = i+1; j < input_string.length(); j++){
if(input_string[j] != input_string[i])
break;
}
out.append(to_string(j-i));
//cout << "input string i is:" << input_string[i] << endl;
out += input_string[i];
i = j-1;
//out.append(to_string(stoi(input_string[i])));
}
//cout << "out is:" << out << "n is:"<< n << endl;
return out;
}
};
637

被折叠的 条评论
为什么被折叠?



