Count and Say--数数

来源:互联网 发布:nginx stream 编辑:程序博客网 时间:2024/05/18 01:25

Count and Say 

题目 :

The count-and-say sequence is the sequence of integers beginning as follows:

1, 11, 21, 1211, 111221, ...

is read off as "one 1" or .

is read off as "two 1s" or .

is read off as "one 2 , then one 1" or .

Given an integer n , generate the n th sequence.

Note: The sequence of integers will be represented as a string.

题  :

题目说的实在是太不明白了。。。

解释一下就是,输入n,那么我就打出第n行的字符串。

怎么确定第n行字符串呢?他的这个是有规律的。

n = 1时,打印一个1。

n = 2时,看n=1那一行,念:1个1,所以打印:11。

n = 3时,看n=2那一行,念:2个1,所以打印:21。

n = 4时,看n=3那一行,念:一个2一个1,所以打印:1211。

以此类推。(注意这里n是从1开始的)

所以构建当前行的字符串要依据上一行的字符串。 “小陷阱就是跑完循环之后记得把最后一个字符也加上,因为之前只是计数而已。”

public class Solution {
    public String countAndSay(int n) {
        String result = "1";
        for (int outer = 1; outer < n; outer++) {
            String previous = result;
            result = "";
            int count = 1;
            char say = previous.charAt(0);


            for (int i = 1; i < previous.length(); i++) {
                if (previous.charAt(i) != say) {
                    result = result + count + say;
                    count = 1;
                    say = previous.charAt(i);
                } else count++;
            }
            result = result + count + say;
        }
        return result;
    }
}

0 0
原创粉丝点击