码迷,mamicode.com
首页 > 其他好文 > 详细

lintcode 容易题:Count and Say 报数

时间:2015-10-14 21:38:31      阅读:867      评论:0      收藏:0      [点我收藏+]

标签:

题目:

报数

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

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".

注意

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

解题:

一个有意思的网站,输入数列的前几项,会给你返回部分数列,同时在下面会给出这个数量的程序。这个数列是用来统计前一个数相邻位置相同数字的结果,这样一直递归下去。

Java程序:

技术分享
public class Solution {
    /**
     * @param n the nth
     * @return the nth sequence
     */
    public String countAndSay(int n) {
        // Write your code here
        String 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 sequence
    def countAndSay(self, n):
        # Write your code here
        p = 1
        seq = [1]
        m = n 
        while n>1:
            q = ‘‘
            idx = 0 
            l = len(p)
            while idx<l:
                start = idx 
                idx = idx + 1
                while idx<l and p[idx]==p[start]:
                    idx = idx + 1
                q = 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 报数

标签:

原文地址:http://www.cnblogs.com/theskulls/p/4878457.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!