[LeetCode][Java] Count and Say
2015-07-13 10:48
543 查看
题目:
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.
题意:
count-and-say 序列是如下面所示的一组整数数列:1, 11, 21, 1211, 111221, ...
1读作“一个1”或者11.
11
读作"两个1" 或者 21.
21
读作“一个2”,和“一个1” 或者 1211.
给定一个整数 n,产生第n个序列。
注意:这个生成的整数序列应该用一个字符串表示出来。
算法分析:
* 题目说的实在是太不明白了。。。* 解释一下就是,输入n,那么我就打出第n行的字符串。
* 怎么确定第n行字符串呢?他的这个是有规律的。
* n = 1时,打印一个1。
* n = 2时,看n=1那一行,念:1个1,所以打印:11。
* n = 3时,看n=2那一行,念:2个1,所以打印:21。
* n = 4时,看n=3那一行,念:一个2一个1,所以打印:1211。
* 以此类推。(注意这里n是从1开始的)
题目不难,直接上代码
AC代码:
public class Solution { public String countAndSay(int n) { String subres = ""; if (n==1) return "1"; int sn = 2; String subinput="1"; while(sn<=n) { subres=SubsountandSay(subinput); subinput=subres; sn++; } return subres; } private String SubsountandSay(String n) { String res = ""; String oristring= n; char tem; int i = 0; int startindex=0; int k=0; while(i<oristring.length()) { k=0; tem='\0'; while(i<oristring.length()) { if(oristring.charAt(startindex)==oristring.charAt(i)) { k++; tem=oristring.charAt(i); i++; } else { startindex=i; break; } } res+=Integer.toString(k)+tem; } return res; } }
相关文章推荐
- Java中的基本数据类型和引用数据类型的内存模型
- win7下JDK环境变量配置
- == !=比较的是内存地址 字符串用equals比较
- Java类加载器总结
- 动态代理---动态生成java文件并编译成class文件
- eclipse启动闪退解决方法
- Java学习笔记(2015.7.6~10)
- [转]Java中要注意的几个问题
- 深入理解Java内存模型系列篇
- Spring-jar 详解
- 几个比较经典的算法问题的java实现
- 【Java】按升序对栈进行排序
- 细小知识点之Java
- 用Java实现一些常见的问题
- 离线使用eclipse的代码提示功能
- Java报表生成技术
- Java-文件上传和下载
- MyEclipse 打开Struts配置文件时出错
- java算法学习
- Java Collections工具类