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);
    }
}

总结:每一步都不能想当然带过去思考,让思维有迹可循的前提是每一步都有所依据。

 

posted @ 2022-03-27 08:35  Jukim  阅读(1011)  评论(0编辑  收藏  举报