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

leetcode-38

时间:2020-01-17 20:48:55      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:i++   ringbuf   class   string   amp   表示   color   str   ret   

「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:

1. 1
2. 11
3. 21
4. 1211
5. 111221
1 被读作  "one 1"  ("一个一") , 即 11。
11 被读作 "two 1s" ("两个一"), 即 21。
21 被读作 "one 2",  "one 1" ("一个二" ,  "一个一") , 即 1211。

给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。

注意:整数序列中的每一项将表示为一个字符串。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/count-and-say
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

 

这题主要是分析题意

每一项都是对上一项的描述,比如n = 3时 为 12,那么我们n = 4时,就该表达的意思是描述n = 3的,所以应该是,1个2,1个1,所以就是1211

 

package Leetcode;

public class Solution {

    public String countAndSay(int n) {
        if (n <= 0) return "-1";

        String result = "1";

        for (int i = 1; i < n; i++) {
            StringBuffer builder = new StringBuffer();
            int index = 0;
            while (index < result.length()) {
                // 记录值
                char val = result.charAt(index);
                // 记录连续位数
                int count = 0;

                // 查找连续位数,碰到不相同的数字时停止。
                while (index < result.length() && result.charAt(index) == val) {
                    index++;
                    count++;
                }

                // 追加连续位数到结果中
                builder.append(String.valueOf(count));
                // 追加连续位数的值到结果中
                builder.append(val);
            }
            result = builder.toString();
        }
        return result;
    }
}

 

end

leetcode-38

标签:i++   ringbuf   class   string   amp   表示   color   str   ret   

原文地址:https://www.cnblogs.com/CherryTab/p/12207222.html

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