您的位置:首页 > 其它

leetcode 038 Count and Say

2016-04-25 20:49 483 查看
The count-and-say sequence is the sequence of integers beginning as follows:
1, 11, 21, 1211, 111221, ...


1
 is read off as 
"one
1"
 or 
11
.
11
 is read off as 
"two
1s"
 or 
21
.
21
 is read off as 
"one
2
, then 
one 1"
 or 
1211
.

Given an integer n, generate the nth sequence.

Note: The sequence of integers will be represented as a string.

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
using namespace std;

class Solution {
public:
string countAndSay(int n) {

if(n == 0) return NULL;

if(n==1) {
return "1";
}

string ret = countAndSay(n-1);
string ans = "";
int len = ret.length();

char pre = ret[0], count = '1';

for(int i=1; i < len; i++) {
if(ret[i] == pre) {
count++;
} else {
ans=ans+count+pre;
count = '1';
pre = ret[i];
}
}

ans = ans+count+pre;

return ans;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: