-
题目
-
本题是将数字从1开始,将当前数字转化为口语对应的数字。比如1口语是1个1,记作11;11读作2个1,记作21;21读作1个2,1个1,记作1211……’1’是第一个数字,根据输入的数字n,计算第n个这样的数字。说起来比较拗口,对照着例子可以感受一下……
-
思路
-
从第二个数开始求每个数的字符串,直到求到第n个数
代码
class Solution {
public:
string countAndSay(int n) {
if(n <= 0)
return NULL;
string ret = "1";
if(n == 1)
return ret;
else {
for(int i = 2; i <= n; i++)
ret = countStr(ret);
return ret;
}
}
string countStr(string str) {
string ret;
for(int i= 0; i < str.size(); ) {
int count = 0;
char cur_c = str[i];
while(cur_c == str[i] && i < str.size()) {
i++;
count++;
}
stringstream ss;
string scount;
ss << count;
ss >> scount;
ret += scount + string(1, cur_c);
}
return ret;
}
};