Leetcode: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.
这个题蛮有意思的:
第一个数是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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值