PAT(B) 1084 外观数列(Java)
题目描述
外观数列是指具有以下特点的整数序列:
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
Java代码
/**********************************************************************************
Submit Time Status Score Problem Compiler Run Time User
8/1/2019, 13:04:39 Accepted 20 1084 Java (openjdk) 88 ms wowpH
**********************************************************************************/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] dn = br.readLine().split(" ");
int n = Integer.parseInt(dn[1]); // 需要计算的项数
char[] oldArr = dn[0].toCharArray(); // 上一项
while ((--n) > 0) { // 循环n-1次
char[] newArr = new char[oldArr.length * 2];// 大小最多为2倍
int length = 0; // 当前项的字符个数
newArr[length++] = oldArr[0]; // 至少有1个字符
int number = 1; // 当前字符的连续的个数,至少1个
for (int i = 1; i < oldArr.length; ++i) {
if (oldArr[i] == newArr[length - 1]) {// 第i个字符和当前字符相同
++number; // 当前字符个数加1
} else { // 不同
newArr[length++] = (char) (number + 48);// 将个数添加到新数组中
newArr[length++] = oldArr[i]; // 下一个字符
number = 1; // 初始连续的个数为1
}
}
newArr[length++] = (char) (number + 48);// 最后1个的个数添加到新数组中
oldArr = Arrays.copyOf(newArr, length); // 拷贝新项到oldArr中
}
System.out.println(String.valueOf(oldArr)); // 转成字符串并输出
}
}
提交结果

PAT(B) 1084 外观数列(Java)的更多相关文章
- PAT Basic 1084 外观数列 (20 分)
外观数列是指具有以下特点的整数序列: d, d1, d111, d113, d11231, d112213111, ... 它从不等于 1 的数字 d 开始,序列的第 n+1 项是对第 n 项的描述. ...
- PAT 乙级 1084. 外观数列 (20) 【字符串】
题目链接 https://www.patest.cn/contests/pat-b-practise/1084 思路 用字符串模拟 然后要注意一点 它是连续的 才并在一起 就比如说 d, d1, d1 ...
- PAT乙级:1084 外观数列 (20分)
PAT乙级:1084 外观数列 (20分) 题干 外观数列是指具有以下特点的整数序列: d, d1, d111, d113, d11231, d112213111, ... 它从不等于 1 的数字 d ...
- PAT 1084 外观数列(20)(代码+思路+推荐测试用例)
1084 外观数列(20 分) 外观数列是指具有以下特点的整数序列: d, d1, d111, d113, d11231, d112213111, ... 它从不等于 1 的数字 d 开始,序列的第 ...
- PAT 1084 外观数列
https://pintia.cn/problem-sets/994805260223102976/problems/994805260583813120 外观数列是指具有以下特点的整数序列: d, ...
- 1084 外观数列 (20 分)C语言
外观数列是指具有以下特点的整数序列: d, d1, d111, d113, d11231, d112213111, ... 它从不等于 1 的数字 d 开始,序列的第 n+1 项是对第 n 项的描述. ...
- 【PAT】B1084 外观数列(20 分)(纯C)
第一层循环,用来循环计算第几个元素 第二层用来计算当前元素的下一个 #include<stdio.h> #include<string.h> char aaa[100000] ...
- P1084 外观数列
转跳点:
- PAT Basic 1084
1084 外观数列 外观数列是指具有以下特点的整数序列: d, d1, d111, d113, d11231, d112213111, ... 它从不等于 1 的数字 d 开始,序列的第 n+1 项是 ...
随机推荐
- vim 文本替换讲解
在VIM中进行文本替换: 1. 替换当前行中的内容: :s/from/to/ (s即substitude) :s/from/to/ : 将当前行中的第一个from,替换成to.如果当前行含有多个 fr ...
- Git Bash基础使用(初始化)
前提是在码云上已经新建一个空的项目,可参考:https://www.cnblogs.com/babysbreath/p/9170455.html 1.新建一个目录,存放下载下来的项目,我在D盘新建了一 ...
- unity手机游戏应用程序调试控制台Lunar Mobile Console - PRO 1.5.5
unity手机游戏应用程序调试控制台Lunar Mobile Console - PRO 1.5.5 High-performance Unity iOS/Android console built ...
- JavaWeb三大组件(Servlet、Filter、Listener)
JavaWeb三大组件指的是:Servlet.Filter.Listener,这三个组件在JavaWeb开发中分别提供不同的功能,然而很多人可能只用过其中一个或者两个(Servlet.Filter,比 ...
- 解决:WdatePicker新增状态下只能取比当前月份大的月份,编辑状态下只能取比当前input里指定月份的月份大的值
onclick="WdatePicker({ dateFmt: 'yyyy-MM', autoPickDate: true, minDate: this.value==''?'%y-#{%M ...
- 003 centos7中关闭防火墙
在centos7中,防火墙有了新的变化.下面是常用的几个命令. 1.查看状态 systemctl status firewalld 2.关闭防火墙 systemctl stop firewalld.s ...
- leetcode 384. Shuffle an Array
384. Shuffle an Array c++ random函数:https://www.jb51.net/article/124108.htm rand()不需要参数,它会返回一个从0到最大随机 ...
- [转]linux 下 使用 c / c++ 调用curl库 做通信开发
example: 1. http://curl.haxx.se/libcurl/c/example.html 2. http://www.libcurl.org/book: 1. http:/ ...
- 零基础学Python-第一章 :Python介绍和安装-03.Python的安装
官方版本的python下载以及安装方法,以及pycharm的安装和打开. 社区版就可以完全支持我们的需求了. 点击左侧的图片到右边. 在命令行输入python3 exit() 退出命令行的编辑器. p ...
- locate home of running java application
1. find the target process id of your java app jps [-lm] in my case: [lenmom@Mi- bin]$ jps -l sun.to ...