分析
难度 易
来源
https://leetcode.com/problems/count-and-say/description/
题目
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"
解答
1 package LeetCode; 2 3 public class L38_CountAndSay { 4 public String countAndSay(int n) { 5 if(n<=0){ 6 return null; 7 } 8 String res="1";//第一行结果 9 int len = 0; 10 for(int i=1;i<n;i++){//第二行及以后 11 int count=1;//数字出现次数 12 if(i==1){//第二行 13 res="11"; 14 }else {//不加else的计划,第二行有res,还会接着构建,第二行的res就会成为原本第三行展示的内容 15 len = res.length(); 16 StringBuilder sb = new StringBuilder(); 17 for (int j = 1; j < len; j++) {//统计每个字符出现次数 18 if (res.charAt(j - 1) == res.charAt(j)) { 19 count++; 20 } else { 21 sb.append(count); 22 sb.append(res.charAt(j - 1)); 23 count = 1; 24 } 25 } 26 sb.append(count); 27 sb.append(res.charAt(len - 1)); 28 res = sb.toString(); 29 } 30 } 31 return res; 32 } 33 public static void main(String[] args){ 34 L38_CountAndSay l38=new L38_CountAndSay(); 35 System.out.println(l38.countAndSay(4)); 36 } 37 }