38.Count and Say
这题理解了题意就会比较好做。
- 1
- 11
- 21
- 1211
- 111221
规定第一项是 1
2时,读第一项,就是 1个1
3时,读第二项,就是 2个1
4时,读第三项,就是 1个2,1个1
…
要把相同数字的归纳为数量表示出来。
class CountAndSay {
public:
string countAndSay(int n) {
if (n < 0)
{
return "";
}
return countAndSayCore(n);
}
string countAndSayCore(int n)
{
if (n == 1)
{
return "1";
}
string str = countAndSayCore(n - 1);
// 1211
string newStr = "";
char count = '1';
char target = str[0];
for (int i = 1; i < str.size(); i++)
{
if (str[i] == target)
{
count++;
}
else
{
newStr += count;
newStr += target;
target = str[i];
count = '1';
}
}
newStr += count;
newStr += target;
return newStr;
}
};