leetcode-38.报数


题意

报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:

1.     1
2. 11
3. 21
4. 1211
5. 111221

1 被读作  "one 1"  ("一个一") , 即 11
11 被读作 "two 1s" ("两个一"), 即 21
21 被读作 "one 2",  "one 1" ("一个二" ,  "一个一") , 即 1211

给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。

注意:整数顺序将表示为一个字符串。

示例 1:

输入: 1
输出: "1"

示例 2:

输入: 4
输出: "1211"

这题......有点不好理解。

解释下题意,可能有同学看不懂。

题意true

下一个字符串由上一个字符串来决定 。

比如

上一个是1,下一个就是1个1,即 "11";

上一个是21,下一个就是 1个2,1个1,即"1211";

上一个是111221,下一个就是3个1,2个2,1个1,即"312211"。

算法

  1. 定义string raw, ans(raw为最终输出结果, ans为存储中间结果的临时字符串)
  2. 根据输入整数确定更新次数
  3. 每次遍历原始字符串(初始为"1",每次循环结束后更新)
  4. 对重复出现的字符予以计数,计数完毕后将出现的次数和字符添加在ans末尾
  5. 将ans赋给raw, ans置空,继续。
  6. 返回raw

code

 class Solution {
public:
string countAndSay(int n) {
if(n == )
return "";
string raw = "";
string ans = "";
n--;
while(n--)
{
for(int i=; i<raw.length();)
{
int begin = i;
while(raw[i] == raw[begin])
{
i++;
}
char c = i-begin + '';
ans = ans + c + raw[begin];
}
raw = ans;
ans = "";
} return raw;
}
};

附上1:10 的测试样例

The following are the terms from n=1 to n=10 of the count-and-say sequence:

 1.     1
2. 11
3. 21
4. 1211
5. 111221
6. 312211
7. 13112221
8. 1113213211
9. 31131211131221
10. 13211311123113112211

leetcode-38.报数的更多相关文章

  1. [leetcode] 38. 报数(Java)(字符串处理)

    38. 报数 水题 class Solution { public String next(String num) { String ans = ""; int i = 0; wh ...

  2. Leetcode 38.报数 By Python

    报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 111221 1 被读作 "one 1" ...

  3. LeetCode 38.报数(Python3)

    题目: 报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 111221 1 被读作  "one 1& ...

  4. C#刷遍Leetcode面试题系列连载(2): No.38 - 报数

    目录 前言 题目描述 相关话题 相似题目 解题思路: 运行结果: 代码要点: 参考资料: 文末彩蛋 前言 前文传送门: C# 刷遍 Leetcode 面试题系列连载(1) - 入门与工具简介 上篇文章 ...

  5. Leetcode题库——38.报数

    @author: ZZQ @software: PyCharm @file: countAndSay.py @time: 2018/11/9 14:07 说明:报数序列是一个整数序列,按照其中的整数的 ...

  6. 【leetcode算法-简单】38. 报数

    [题目描述] 报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1. 12. 113. 214. 12115. 1112211 被读作  "one 1&qu ...

  7. 【LeetCode 38】报数

    题目链接 [题解] 模拟题 [代码] class Solution { public: string inttostr(int x){ string temp=""; while ...

  8. [LeetCode] 38. Count and Say 计数和读法

    The count-and-say sequence is the sequence of integers with the first five terms as following: 1. 1 ...

  9. Java实现 LeetCode 38 外观数列

    38. 外观数列 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述.前五项如下: 1 11 21 1211 111221 1 被读作 "one 1" ...

  10. LeetCode - 38. Count and Say

    38. Count and Say Problem's Link ------------------------------------------------------------------- ...

随机推荐

  1. spark面试总结1

    Spark Core面试篇01 一.简答题 1.Spark master使用zookeeper进行HA的,有哪些元数据保存在Zookeeper? 答:spark通过这个参数spark.deploy.z ...

  2. IT老人,给后辈的十一点建议

    我已经在IT业打拼9年了,从完全自学成为技术团队leader到PM也确实总结了不少的经验,自己也经常跟学弟学妹聊天,分享职场经验,当老家有人报考计算机或者从事相关工作时也会咨询我的意见,我很明白IT人 ...

  3. MySQL(3)---MySQL优化

    MySQL优化 一.单表.双表.三表优化 1.单表    首先结论就是,range类型查询字段后面的索引全都无效 (1)建表 create table if not exists article( i ...

  4. Python快速学习09: 函数的参数

    前言 系列文章:[传送门] 继续干起来!! 正文 我们已经接触过函数,函数是可以被引用的(访问或者以其他变量作为其别名),也作为参数传入函数,以及作为列表和字典等等容器对象的元素(function)的 ...

  5. 【原创】为什么浮点数1e38f + 1 - 1e38f等于0

    1. 问题 为什么1e38f + 1 - 1e38f为0? 2. 分析 ; //00 00 00 02 int *pii = &ii; float i = 1e38f; //7e 96 76 ...

  6. Perl的IO操作(2):更多文件句柄模式

    open函数除了> >> <这三种最基本的文件句柄模式,还支持更丰富的操作模式,例如管道.其实bash shell支持的重定向模式,perl都支持,即使是2>&1 ...

  7. 翻译:window function(已提交到MariaDB官方手册)

    本文为mariadb官方手册:window functions的译文. 原文:https://mariadb.com/kb/en/window-functions-overview/ 我提交到Mari ...

  8. 翻译:CONCURRENT INSERTS(已提交到MariaDB官方手册)

    本文为mariadb官方手册:CONCURRENT INSERTS的译文. 原文:https://mariadb.com/kb/en/concurrent-inserts/我提交到MariaDB官方手 ...

  9. 使用Dev C++调试(debug)程序

    在 "Tools" -> "Compiler Options" -> "Add following commands when calli ...

  10. 【golang-GUI开发】Qt5的安装

    golang一直被认为没有好的GUI库,事实并非如此. 目前有基于gtk+3.0的gotk3:https://github.com/gotk3/gotk3 以及接下来我们要说的qt:https://g ...