一.题目描述
把abcd...s共19个字母组成的序列重复拼接106次,得到长度为2014的串。
接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。
得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。
二.代码
public class test1 {
public static void main(String[] args){
char []arr = new char[2014];//【数组应该是char类型】
int index =0;
for(int i=0;i<106;i++){//重复拼接106次
for(int j=0;j<19;j++){//19个字母
arr[index] =(char)(j+'a');//将字母存放在arr数组中
index++;//数组下标加一
}
}
int len=2014;
while(len!=1){//长度大于1时不断循环,直到长度等于1,即只剩下一个字母
int k=0;
for(int i=1;i<len;i+=2){//奇数,从1开始,每次i加上2
arr[k]=arr[i];//存在数组中
k++;//数组下标加一
}
len = k;//长度就是k值,k在上面已经加上一了,所以k即长度
}
System.out.println(arr[0]);//只有一个元素
}
}