Leetcode:Count and Say

来源:互联网 发布:大数据架构有哪些 编辑:程序博客网 时间:2024/06/16 14:53

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.
这个题蛮有意思的:
第一个数是1.
后一个数则是把前一个数和数字的个数一起读出来。
如第二个:一个1。于是就是11
第三个:两个1,于是 21
第四个:一个2,一个1.于是1211
以此类推

写一个toSay函数。然后对每个输入string,输出它的变成say形式的输出。

然后循环调用n次即可。

关键是统计有几个连续的x(x=1-9),得到int个数后,将其转化为字符串连接起来。

    public static String countAndSay(int n) {        if(n==0) return "";        if(n==1) return "1";        if(n==2) return "11";        int a=2;        String temp="11";        while(a++!=n){            temp=toSay(temp);        }        return temp;    }    public static String toSay(String s){        char temp=s.charAt(0);        int count=0;        StringBuffer result= new StringBuffer();        for(int i=0;i<s.length();i++){            if(temp==s.charAt(i)) count++;            else {                result.append(count);                count=1;                result.append(temp);                temp=s.charAt(i);            }        }        result.append(count);        result.append(s.charAt(s.length()-1));        return result.toString();    }

实现不是很好

0 0