PTA乙级1084

1084

外观数列是指具有以下特点的整数序列:

d, d1, d111, d113, d11231, d112213111, …
它从不等于 1 的数字 d 开始,序列的第 n+1 项是对第 n 项的描述。比如第 2 项表示第 1 项有 1 个 d,所以就是 d1;第 2 项是 1 个 d(对应 d1)和 1 个 1(对应 11),所以第 3 项就是 d111。又比如第 4 项是 d113,其描述就是 1 个 d,2 个 1,1 个 3,所以下一项就是 d11231。当然这个定义对 d = 1 也成立。本题要求你推算任意给定数字 d 的外观数列的第 N 项。

输入格式:

输入第一行给出 [0,9] 范围内的一个整数 d、以及一个正整数 N(≤ 40),用空格分隔。

输出格式:

在一行中给出数字 d 的外观数列的第 N 项。

输入样例:

1 8

输出样例:

1123123111

思路:这题跟之前做的压缩有点像详情见1078字符串压缩与解压
这里判断有一点不同,计数为1的时候不需要增加判断,和最后一位与前面不同的时候要再循环外判断计数是否为1.

代码:

package Test_PTA_1062to;import test.S;import java.util.Scanner;public class PTA1084 {public static void main(String[] args) {Scanner in=new Scanner(System.in);String  d=in.next();int N=in.nextInt();for(int i=0;i<N-1;i++) {//第N位就是进行N-1次变化d=x(d);}System.out.println(d);}public static String x(String d){//变化的方法char[] b=d.toCharArray();StringBuilder sb=new StringBuilder();char c = b[0];//设置b[0]为第一个比较字符int index = 1;//用于计算字符数量初始为一个for (int i = 1; i < b.length; i++) {char now = b[i];//设置当前要比较的字符,为了看的方便if (now==c) {//判断是否为相同字符index++;//开始计数if(i==b.length-1){sb.append(c).append(index);}}else {sb.append(c);sb.append(index);c = now;    //将下一个字符作为比较字符index = 1;//更新该字符出现的次数}}if(index==1) {sb.append(c).append(index);}return sb.toString();}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部