Count And Say

1, 11, 21, 1211, 111221, ...
Given an integer n, generate the nth sequence.

这题是easy题,但我不知不觉又做了一个小时..感觉我的精神是游离的..一旦遇到思维困难就常常陷入一种不思进取的状态,然后不断自我怀疑....这种习惯是需要替换的。即便做不出来不要一直呆在那里想呀。

这题要维护两个string,第i个 和第i-1个sequence。巧妙的地方是for循环外面的部分,是处理最后1位或者n位数字的。所以我觉得这题思维难度还是有的。注意每次结束后或者开始前count要置1。

    public String countAndSay(int n) {
        StringBuilder res = new StringBuilder();
        res.append("1");
        int count = 1;
        int i = 1;
        while (i < n) {
            StringBuilder sb = new StringBuilder();
            for (int j = 1; j < res.length(); j++) {
                if (res.charAt(j) == res.charAt(j - 1)) {
                    count++;
                } else {
                    sb.append(count);
                    sb.append(res.charAt(j - 1));
                    count = 1;
                }
            }
            sb.append(count);
            //count 每次都要置1
            count = 1;
            sb.append(res.charAt(res.length() - 1));
            res = sb;
            i++;
        }
        return res.toString();
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容