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:
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;
}
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, ...
1is read off as
"one 1"or
11.
11is read off as
"two 1s"or
21.
21is 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;
}
相关文章推荐
- “error LNK1169: 找到一个或多个多重定义的符号”的解决方法
- 阅读《Android 从入门到精通》(5)——文本框视图
- Stop More Bugs with our Code Review Checklist
- linux终端nohup置空
- Codeforces 577B,鸽巢原理(抽屉原理)
- 防钓鱼相关措施
- 实现贴标签功能
- vncserver
- Android中如何得知当前View中的EditText正在被编辑或改动,即如何检测EditText的焦点
- sed one line
- Sublime Text 3 PHP Python 配置
- 在JAVA中查询刚插入的记录ID 利用JDBC的getGeneratedKeys获得INSERT插入后生成的主键ID
- LeetCode Intersection of Two Linked Lists
- 使用navicat把一个数据库的表导入到另外一个数据库
- django03_表单(forms.ModelForm)(login前后台)
- “摇宝箱”蓄势谋发 三维度磁场效应凸显
- Nginx 下缓存静态文件(如css js)
- 【C++】智能指针之引用计数的实现
- 二叉树转化为排序的双向链表
- TDD的三条规则(中英对照)