您的位置:首页 > 其它

leetcode之Count and Say

2015-09-11 15:19 274 查看
这个题目关键是理解题目。别人是这样理解的。
1
1个1,即11
2个1,即21
1个2,1个1,即1211,
1个1,1个2,2个1,即111221,
3个1,2个2,1个1,即312211

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.

Show Tags

Show Similar Problems

// test38CountAndSay.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#include "string"

#include "iostream"

using std::cout;

using std::endl;

using std::string;

string countAndSay(int n);

string count(string temp);

int _tmain(int argc, _TCHAR* argv[])

{

string s = countAndSay(4);

return 0;

}

string countAndSay(int n)

{

string result;

if (n == 1)

return "1";

else

{

result = "1";

for (int i = 1; i < n; i++)

{

result = count(result);

}

}

return result;

}

string count(string temp)

{

int n = temp.size();

char countNum;

int count = 0;

string result = "";

char current = temp[0];

for (auto i = 0; i < n; i++)

{

if (temp[i] == current)

{

count++;

continue;//相等就继续往后搜索

}

else

{ //不等则拼接后重新搜索,注意当前字符更新。

countNum = count + 48;//Int转字符型

result += countNum;

result += current;

count = 1;

current = temp[i];

}

}

//拼接最后搜索到的数字。

countNum = count + 48;

result += countNum;

result += current;

return result;

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