您的位置:首页 > 其它

LeetCode: Count and Say 题解

2014-06-11 10:36 309 查看
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.

本题的难点在于理解题目的意思。

最好的理解就是给出 111221之后的一个sample: 312211

如何理解呢? 将111221 拆成后面的表达式即可: 111, 22, 1 其中有 3个one , 2个two, 1个one ,读起来就是: 312211

 class Solution {
public:
string countAndSay(int n) {
string a="1";
if(n==1) return a;
for(int i=2;i<=n;i++)
{
string b;
char current = a[0];
int j=1,count=1;
for(j=1;j<a.size();j++)
{
if(a[j]==current)
{
count++;
}
else
{
char c = count +'0';
b+=c;
b+=current;
current = a[j];
count=1;
}
}
char c = count+'0';
b+=c;
b+=current;
a= b;
}
return a;
}
};


转载请注明出处: http://www.cnblogs.com/double-win/ 谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: