题目描述
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:
1. 1
2. 11
3. 21
4. 1211
5. 111221
1 被读作 "one 1" ("一个一") , 即 11。
11 被读作 "two 1s" ("两个一"), 即 21。
21 被读作 "one 2", "one 1" ("一个二" , "一个一") , 即 1211。
给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。
注意:整数顺序将表示为一个字符串。
示例 1:
输入: 1
输出: "1"
示例 2:
输入: 4
输出: "1211"
题目理解 重点是要明白报数是由前一个推出后一个
题目代码 不是最优的
package leetcode.easy.week01;
import java.util.ArrayList;
import java.util.List;
public class problem38 {
public String countAndSay(int n) {
String result="11";
if(n==1){
return "1";
}else if(n==2){
return "11";
}else{
for(int a=2;a<n;a++){
String res=result;
result="";
String s= String.valueOf(res.charAt(0));
int count=1;
for(int ab=1;ab<res.length();ab++){
String t= String.valueOf(res.charAt(ab));
if(t.equals(s)){
count++;
}else{
result=result+count+s;
s=t;
count=1;
}
}
result=result+count+String.valueOf(res.charAt(res.length()-1));
}
}
return result;
}
public static void main(String[] args) {
problem38 pro=new problem38();
String s = pro.countAndSay(4);
System.out.println("结果是:"+s);
}
}