lintcode :Count and Say 报数
题目:
报数
报数指的是,按照其中的整数的顺序进行报数,然后得到下一个数。如下所示:
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 报数相关推荐
- leetcode之Count and Say报数
题目链接:Count and Say报数 一开始试图找规律,直接写了个简单粗暴的代码,跑起来好像没发现规律. 试着提交居然过了,但是速度比较慢,就改进了下代码. 按题意来的简单粗暴的代码(40ms)如 ...
- 题目98-3:围成一圈数三报数且出列——假设有10个人围成一圈,从1开始报数,数到3的人,让他出列,下一个人重新从1开始报数,数到3的人,让他出列……以此类推,把依次出列的9个人的编号打印出来
题目转载:http://python.wzms.com/s/1/103 题目描述: n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再 ...
- linux中vim如何显示行数,vim 在linux下中如何设置显示行数
在.vimrc(或/etc/vimrc)文件中输入如下文本: set tabstop=4 set softtabstop=4 set shiftwidth=4 set noexpandtab set ...
- vim 在linux下中如何设置显示行数
在.vimrc(或/etc/vimrc)文件中输入如下文本: set tabstop=4 set softtabstop=4 set shiftwidth=4 set noexpandtab set ...
- python约瑟夫环问题给十个学生编号报到3者出列_趣味算法--约瑟夫环问题(示例代码)...
问题描述 已知n个人(以编号1,2,3,...,n分别表示)围坐在一张圆桌上.指定编号为k的人开始从1报数,数到m的那个人出列:出列那个人的下一位又从1开始报数,数到m的那个人出列:以此规则重复下去, ...
- Java_案例实例2.约瑟夫环问题
约瑟夫环问题描述: 编号为1-N的N个人按顺时针方向围坐成一圈,从第S个人开始报数(从1报起),报数为M的人出圈,再从他的顺时针方向的下一个人重新开始报数,如此下去,直至所有人出圈为止,给出N个人的出 ...
- c语言圈子,C语言经典编程
// 经典1 //随机产生20个[10,50]的正整数存到数组中,并求出数组中的所有元素最大值,最小值,平均值以及个元素之和,及第二大值 int a[20] = {0}; printf("随 ...
- 【生存游戏】一组按序排列围成一圈的参赛选手,通过逢3退1游戏机制筛选出最后一个生存者的Java算法
游戏背景 私立希望之峰学园是一座集结了所有领域的超一流高中生的学校.主人公苗木诚,本来只是一名很平凡的日本高中生,却在无意中被选为了"超高校级的幸运"者进入了学园.但是,等待他的却 ...
- 用Java数组实现选队长的游戏
任务概述: 今天同学们相约一起爬山游玩,为了更好的进行这场活动,大家准备推举 一个人作为出游的临时队长.为了体现合理公平,大家提出了一个比较有趣的 规则.所有人围成一圈,顺序排号.从第一个人开始报数( ...
最新文章
- hive practice 1
- python构造方法与java区别_一张图秒懂Java和Python的区别,你知道吗?
- 大连网络推广明确做好网站标题优化对网站排名的提升影响
- C语言如何产生随机数
- 5W+人的公司怎么把总部和分部网络连接起来?
- CryptAPI和openssl交互使用
- 【HDU - 6187】Destroy Walls(思维,最大生成树)
- MySQL架构设计相关的方式方法和软件介绍
- iOS 和常见的离屏渲染Say Goodbye!
- (最小生成树) Borg Maze -- POJ -- 3026
- android usb pos机,USB支持安卓系统NFC刷卡器|RFID刷卡机ACR122U
- PHP自动售货发卡网源码,PHP自动售货发卡网源码 集成多种支付接口
- 动量法与指数加权移动平均
- 2021年电工(初级)考试试卷及电工(初级)考试平台
- 微信小程序 MinUI 组件库系列之 progress 进度条组件
- win7系统安装VS 2019
- MTC110-16-ASEMI可控硅模块MTC110-16
- 是性格决定命运,还是命运造就性格?
- 4. js移动端点触(tap)事件
- ## GEE Landsat8 Collection2 level2 数据集 计算LST地表温度
热门文章
- Jvm处理Java Thread 的run方法中抛出异常的流程
- 写给大忙人的ELK最新版6.2.4学习笔记-Logstash和Filebeat解析(java异常堆栈下多行日志配置支持)
- ie不兼容的几个js问题及解决办法
- idea maven sync Cannot resolve xxx 的解决方案
- 如何获取查询生成器以字符串形式输出其原始SQL查询?
- 从git repo分支安装pip
- 如何将零填充到字符串?
- hdfs mv命令_Hadoop2.x HDFS shell命令
- win11快捷键失效怎么办 windows11快捷键失效的解决方法
- EasyUI组件使用