Easy-题目50:38. Count and Say

转载 2016年05月30日 20:47:12

题目原文:
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.
题目大意:
按规律填空:1,11,21,1211,111221…….
规律是这样的:
1读作“1个1”并写为11;
11读作“2个1”并写为21;
21读作“1个2,1个1”并写为1211
……
求出这个数列的第n项
题目分析:
首先求出第n-1项,然后从头扫第n-1项的字符串,依次统计连续相同字符的个数。
源码:(language:java)

public class Solution {
     public  String countAndSay(int n) {
        if(n==1)
            return "1";
        else
        {
            String str=countAndSay(n-1);
            int i=0;
            String answer="";
            while(i<str.length())
            {
                int j=i;
                while(j<str.length() && str.charAt(i)==str.charAt(j))
                    j++;
                if(j>i)
                {
                    answer+=Integer.toString(j-i);
                    answer+=str.charAt(i);
                    i=j;
                }
                else
                    i++;
            }
            return answer;
        }
     }

}

成绩:
36ms,beats 3.03%,众数5ms,16.44%.
cmershen的碎碎念:
本题成绩较差,是因为使用了递归?不过如果不用递归难道不从n-1项推出n项吗?
本题的数列可在OEIS的A005150查到。

LeetCode --- 38. Count and Say

题目链接:Count and Say The count-and-say sequence is the sequence of integers beginning as follows: ...
  • makuiyu
  • makuiyu
  • 2015年02月05日 23:33
  • 2387

leetcode 38 Count and Say C++

三个循环,总感觉很慢。。。 string countAndSay(int n) { if(!n) return ""; string str = "1"; ...
  • a2331046
  • a2331046
  • 2016年06月08日 10:28
  • 350

LeetCode 38 : Count and Say (Java)

解题思路:我表示这道题对我来说关键就是理解题意。。。真的没理解题意,网上查了才恍然大悟。首先说一下题意。n=1时输出字符串1;n=2时,数上次字符串中的数值个数,因为上次字符串有1个1,所以输出11;...
  • changetocs
  • changetocs
  • 2015年12月02日 22:50
  • 1109

leetCode 38.Count and Say (计数和发言) 解题思路和方法

Count and Say  The count-and-say sequence is the sequence of integers beginning as follows: 1, 1...
  • xygy8860
  • xygy8860
  • 2015年07月09日 20:40
  • 3753

LeetCode 38 Count and Say(C,C++,Java,Python)

Problem: The count-and-say sequence is the sequence of integers beginning as follows: 1, 11, 2...
  • runningtortoises
  • runningtortoises
  • 2015年05月19日 21:36
  • 2201

[LeetCode] 038. Count and Say (Easy) (C++/Python)

[LeetCode] 038. Count and Say (Easy) (C++/Python)
  • hcbbt
  • hcbbt
  • 2015年07月30日 10:04
  • 1824

Count and Say @python 题解

Count and Say python @题解
  • xiaolewennofollow
  • xiaolewennofollow
  • 2015年04月23日 10:03
  • 1222

LeetCode 38 Count and Say(计数与报数)

翻译计数报数序列按如下规律开始递增: 1,11,21,1211,111221,……1 读作“1个1”或11. 11 读作“2个1”或21. 21 读作“1个2,1个1”或1211.给定一个整数n,生成...
  • NoMasp
  • NoMasp
  • 2015年12月03日 10:32
  • 4249

Count and Say 数数并打印 @LeetCode

题目比较不直观,这里的描述比较好一些  http://www.careercup.com/question?id=4425679 "Count and Say problem" Write a cod...
  • hellobinfeng
  • hellobinfeng
  • 2013年10月21日 03:40
  • 14986

LeetCode38 Count and Say(C语言解决)

题目要求: The count-and-say sequence is the sequence of integers beginning as follows: 1, 11, 21, 1211...
  • sinat_32547403
  • sinat_32547403
  • 2016年11月15日 12:13
  • 382
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Easy-题目50:38. Count and Say
举报原因:
原因补充:

(最多只允许输入30个字)