您的位置:首页 > 编程语言 > C语言/C++

[leetcode] 【字符串】 38. Count and Say

2016-06-15 15:53 323 查看
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.

题意

按照计数方式来生成下一个数值,比如1的下一个数值就是1个1  表示为11

11的下一个数是2个1  表示为21

21的下一个数为1个2      1个1     表示为1211

以此类推,n表示第n个数。

题解

一个个迭代计算,迭代n次

class Solution {
public:
string tran(string cur)
{
string res;
char key=cur[0];
int times=1;
for(int i=1;i!=cur.size();i++)
{
if(cur[i]==key)
times++;
else
{
char stimes=times+'0';
res=res+stimes+key;
key=cur[i];
times=1;
}
}
char stimes=times+'0';
res=res+stimes+key;
return res;
}
string countAndSay(int n) {
string cur="1";
while(--n)
cur=tran(cur);
return cur;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode cpp