标签:leetcode java count and say
The count-and-say sequence is the sequence of integers beginning as follows:
1, 11, 21, 1211, 111221, ...
1
is read off as "one
1"
or 11
.
11
is read off as "two
1s"
or 21
.
21
is 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开始的)
题目不难,直接上代码
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; } }
版权声明:本文为博主原创文章,转载注明出处
[LeetCode][Java] Count and Say
标签:leetcode java count and say
原文地址:http://blog.csdn.net/evan123mg/article/details/46859661