38. Count and Say

The count-and-say sequence is the sequence of integers with the first five terms as following:

1.     1
2.     11
3.     21
4.     1211
5.     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 where 1 ≤ n ≤ 30, generate the nth term of the count-and-say sequence.

Note: Each term of the sequence of integers will be represented as a string.

Example 1:
Input: 1
Output: "1"

Example 2:
Input: 4
Output: "1211"

难度:easy

题目:

count-and-say 序列如下如示:

1.     1
2.     11
3.     21
4.     1211
5.     111221
1 读作1个1或11
11 读作2个1或21
21 读作1个2,接着1个1 或1211

给定一个整数n 大于等于1小于等于30, 产生第n组序列。

注意:每项由整数组成的序列以字符串表示。

Runtime: 3 ms, faster than 72.13% of Java online submissions for Count and Say.

Memory Usage: 25.8 MB, less than 98.33% of Java online submissions for Count and Say.

class Solution {
    public String countAndSay(int n) {
        String str = "";
        for (int i = 0; i < n; i++) {
            str = generateNext(str);
        }
        
        return str;
    }
    
    private String generateNext(String s) {
        if (s.isEmpty()) {
            return "1";
        }
        // add and end flag
        s += ".";
        int counter = 1;
        StringBuilder str = new StringBuilder();
        for (int i = 1; i < s.length(); i++) {
            if (s.charAt(i) != s.charAt(i - 1)) {
                str.append(counter).append(s.charAt(i - 1));
                counter = 1;
            } else {
                counter++;
            }
        }
        
        return str.toString();
    }
}

原文 

https://segmentfault.com/a/1190000018097683

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 38. Count and Say

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址