30.数列中A[n+1]都是A[n]的描述 问题
有一个数列A[n],从A[0]开始每一项都是一个数字,数列中A[n+1]都是A[n]的描述,其中A[0]=1
规则如下
A[0]:1
A[1]:11 含义其中A[0]=1是1个1 即11, 表示A[0]从左到右连续出现了1次1
A[2]:21 含义其中A[1]=11是2个1 即21, 表示A[1]从左到右连续出现了2次1
A[3]:1211 含义其中A[2]从左到右是由一个2和一个1组成 即1211, 表示A[2]从左到右连续出现了一次2又连续出现了一次1
A[4]:111221 含义A[3]=1211 从左到右是由一个1和一个2两个1 即111221, 表示A[3]从左到右连续出现了一次1又连续出现了一次2又连续出现了2次1
输出第n项的结果
0<= n <=59
输入描述:
数列第n项 0<= n <=59
4
输出描述
数列内容
111221
查看代码
import java.util.*;
public class Demo30 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
String content = "1";
if(n == 0){
System.out.println(content);
return ;
}
StringBuilder sb ;
for(int i = 1; i <= n; i++){
sb = new StringBuilder();
char[] chars = content.toCharArray();
char compare = chars[0]; //初始状态,比较起点
int count = 1;
for(int j = 1; j < content.length(); j++){
if(chars[j] == compare) count++;
else{
sb.append(count).append(compare);
compare = chars[j];
count = 1;
}
}
//对中间过程还是思考还是不够清晰,刚开始漏了这行代码,一直得不到正确结果
sb.append(count).append(compare);
content = sb.toString();
}
System.out.println(content);
}
}
总结:每一步都不能想当然带过去思考,让思维有迹可循的前提是每一步都有所依据。