题目:

报数

报数指的是,按照其中的整数的顺序进行报数,然后得到下一个数。如下所示:

1, 11, 21, 1211, 111221, ...

1 读作 "one 1" -> 11.

11 读作 "two 1s" -> 21.

21 读作 "one 2, then one 1" -> 1211.

给定一个整数 n, 返回 第 n 个顺序。

样例

给定 n = 5, 返回 "111221".

注意

整数的顺序将表示为一个字符串

解题:

题目思路很清晰,按照高位到低位的顺序,统计相同数字的个数,并把a个b写成ab的形式,所以的连接在一起就是一个新数,下一个数利用同样的规律。

一个有意思的网站,Python程序来源。

Java程序:

public class Solution {/*** @param n the nth* @return the nth sequence*/public String countAndSay(int n) {// Write your code hereString oldString = "1";while (--n>0){StringBuilder sb = new StringBuilder();char[] oldChars = oldString.toCharArray();for(int i=0;i<oldChars.length;i++){int count = 1;while((i+1)<oldChars.length && oldChars[i]==oldChars[i+1]){count++;i++;}sb.append(String.valueOf(count) + String.valueOf(oldChars[i]));}oldString = sb.toString();}return oldString;}

View Code

总耗时: 7304 ms

程序来源

Python程序:

class Solution:# @param {int} n the nth# @return {string} the nth sequencedef countAndSay(self, n):# Write your code herep = '1'seq = [1]m = n while n>1:q = ''idx = 0 l = len(p)while idx<l:start = idx idx = idx + 1while idx<l and p[idx]==p[start]:idx = idx + 1q = q+str(idx - start) + p[start]n, p = n -1 ,q seq.append(int(p))return str(seq[m-1])

View Code

总耗时: 312 ms

根据运行错误的结果,发现这个题目的测试数据只是 1 到9 这9个数,太小了吧。。。

lintcode :Count and Say 报数相关推荐

  1. leetcode之Count and Say报数

    题目链接:Count and Say报数 一开始试图找规律,直接写了个简单粗暴的代码,跑起来好像没发现规律. 试着提交居然过了,但是速度比较慢,就改进了下代码. 按题意来的简单粗暴的代码(40ms)如 ...

  2. 题目98-3:围成一圈数三报数且出列——假设有10个人围成一圈,从1开始报数,数到3的人,让他出列,下一个人重新从1开始报数,数到3的人,让他出列……以此类推,把依次出列的9个人的编号打印出来

    题目转载:http://python.wzms.com/s/1/103 题目描述: n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再 ...

  3. linux中vim如何显示行数,vim 在linux下中如何设置显示行数

    在.vimrc(或/etc/vimrc)文件中输入如下文本: set tabstop=4 set softtabstop=4 set shiftwidth=4 set noexpandtab set ...

  4. vim 在linux下中如何设置显示行数

    在.vimrc(或/etc/vimrc)文件中输入如下文本: set tabstop=4 set softtabstop=4 set shiftwidth=4 set noexpandtab set ...

  5. python约瑟夫环问题给十个学生编号报到3者出列_趣味算法--约瑟夫环问题(示例代码)...

    问题描述 已知n个人(以编号1,2,3,...,n分别表示)围坐在一张圆桌上.指定编号为k的人开始从1报数,数到m的那个人出列:出列那个人的下一位又从1开始报数,数到m的那个人出列:以此规则重复下去, ...

  6. Java_案例实例2.约瑟夫环问题

    约瑟夫环问题描述: 编号为1-N的N个人按顺时针方向围坐成一圈,从第S个人开始报数(从1报起),报数为M的人出圈,再从他的顺时针方向的下一个人重新开始报数,如此下去,直至所有人出圈为止,给出N个人的出 ...

  7. c语言圈子,C语言经典编程

    // 经典1 //随机产生20个[10,50]的正整数存到数组中,并求出数组中的所有元素最大值,最小值,平均值以及个元素之和,及第二大值 int a[20] = {0}; printf("随 ...

  8. 【生存游戏】一组按序排列围成一圈的参赛选手,通过逢3退1游戏机制筛选出最后一个生存者的Java算法

    游戏背景 私立希望之峰学园是一座集结了所有领域的超一流高中生的学校.主人公苗木诚,本来只是一名很平凡的日本高中生,却在无意中被选为了"超高校级的幸运"者进入了学园.但是,等待他的却 ...

  9. 用Java数组实现选队长的游戏

    任务概述: 今天同学们相约一起爬山游玩,为了更好的进行这场活动,大家准备推举 一个人作为出游的临时队长.为了体现合理公平,大家提出了一个比较有趣的 规则.所有人围成一圈,顺序排号.从第一个人开始报数( ...

最新文章

  1. hive practice 1
  2. python构造方法与java区别_一张图秒懂Java和Python的区别,你知道吗?
  3. 大连网络推广明确做好网站标题优化对网站排名的提升影响
  4. C语言如何产生随机数
  5. 5W+人的公司怎么把总部和分部网络连接起来?
  6. CryptAPI和openssl交互使用
  7. 【HDU - 6187】Destroy Walls(思维,最大生成树)
  8. MySQL架构设计相关的方式方法和软件介绍
  9. iOS 和常见的离屏渲染Say Goodbye!
  10. (最小生成树) Borg Maze -- POJ -- 3026
  11. android usb pos机,USB支持安卓系统NFC刷卡器|RFID刷卡机ACR122U
  12. PHP自动售货发卡网源码,PHP自动售货发卡网源码 集成多种支付接口
  13. 动量法与指数加权移动平均
  14. 2021年电工(初级)考试试卷及电工(初级)考试平台
  15. 微信小程序 MinUI 组件库系列之 progress 进度条组件
  16. win7系统安装VS 2019
  17. MTC110-16-ASEMI可控硅模块MTC110-16
  18. 是性格决定命运,还是命运造就性格?
  19. 4. js移动端点触(tap)事件
  20. ## GEE Landsat8 Collection2 level2 数据集 计算LST地表温度

热门文章

  1. Jvm处理Java Thread 的run方法中抛出异常的流程
  2. 写给大忙人的ELK最新版6.2.4学习笔记-Logstash和Filebeat解析(java异常堆栈下多行日志配置支持)
  3. ie不兼容的几个js问题及解决办法
  4. idea maven sync Cannot resolve xxx 的解决方案
  5. 如何获取查询生成器以字符串形式输出其原始SQL查询?
  6. 从git repo分支安装pip
  7. 如何将零填充到字符串?
  8. hdfs mv命令_Hadoop2.x HDFS shell命令
  9. win11快捷键失效怎么办 windows11快捷键失效的解决方法
  10. EasyUI组件使用