您的位置:首页 > 其它

[Leetcode] Count and Say

2014-07-27 16:03 267 查看
问题: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.

题目比较难懂,就是要输出上面第一行的序列,输入参数n表示要输出前n个。这行序列的意思是数上个字符串中的数值个数,n=1时输出字符串1;n=2时,因为上次字符串是1,有1个1,所以输出11;n=3时,由于上次字符是11,有2个1,所以输出21;n=4时,由于上次字符串是21,有1个2和1个1,所以输出1211,一次类推。用一个比较简单的迭代即可完成。

string itercont(string str)
{
string res;
int cont=1;
int i=0;
for( i=0; i<str.size()-1; i++)
{
if(str[i]==str[i+1])
cont++;
else
{
res.push_back('0'+cont);
res.push_back(str[i]);
cont=1;
}
}
if(i==str.size()-1)
{
res.push_back('0'+cont);
res.push_back(str[i]);
}
return res;
}

string countAndSay(int n)
{
if (n <= 0) return string();
string result="1";

for(int i=1; i<n; i++)
{
result=itercont(result);
}
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: