Leet Code OJ 38. Count and Say [Difficulty: Easy]

题目:
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.

翻译:
这个”计算并说出“的序列是一个整数序列,开始于下列这样:
1, 11, 21, 1211, 111221, …
1 读作 “1个1” 或者 11.
11 读作”2个1” 或者 21.
21 读作”1个2, 然后1个1” 或者 1211.
给定一个整数n,产生第n个序列。

分析:
这道题目的意思,需要仔细看一下才能看懂,简单来说,n=1的时候返回”1”,n>1的时候,对n-1返回的值按照类似”21->1211“这种读出的方式处理后,将结果返回。

代码:

public class Solution {
    public String countAndSay(int n) {
        String str="1";
        for(int i=1;i<n;i++){
            char[] arr=str.toCharArray();
            str="";
            int count=0;
            char current='1';
            for(char c:arr){
                if(c==current){
                    count++;
                }else{
                    if(count!=0){
                        str+=""+count+current;
                    }
                    count=1;
                    current=c;
                }
            }
            if(count!=0){
                str+=""+count+current;
            }
        }
        return str;
    }
}

你可能感兴趣的:(算法)