一、问题描述:从x星截获一份电码,是一些数字,如下:
13
1113
3113
132113
1113122113
…
YY博士经彻夜研究,发现了规律:
第一行的数字随便是什么,以后每一行都是对上一行“读出来”比如第2行,是对第1行的描述,意思是:1个1,1个3,所以是:1113
第3行,意思是:3个1,1个3,所以是:3113
请你编写一个程序,可以从初始数字开始,连续进行这样的变换。
数据格式:
第一行输入一个数字组成的串,不超过100位
第二行,一个数字n,表示需要你连续变换多少次,n不超过20
输出一个串,表示最后一次变换完的结果。
样例输入:
5
7
样例输出:
13211321322115
代码如下:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
int n =sc.nextInt();
int j=0;
int count=1;//表示有几个连续相同的数字
while(n!=0) {
String s="";//定义一个新的字符串,用来保存经过一次变换的字符串
for(j=0;j<str.length();j++) {
if(j+1<str.length() && str.charAt(j)==str.charAt(j+1)) {
count++;
}
else {
s+=count+""+str.charAt(j);//这里加一个""是为了保证"+"表示连接字符串,而不是相加
count=1;//重新开始计数
}
}
n--;
str=s;
}
System.out.println(str);
}