蓝桥杯省赛真题2014年第五届Java本科B组
第03题——猜字母
把abcd…s共19个字母组成的序列重复拼接106次,得到长度为2014的串。
接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。
得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。
答案是一个小写字母,请通过浏览器提交答案。不要填写任何多余的内容。
思路
按照题意创建数组,然后提取即可,注意数组边界
代码
package 第05届蓝桥杯省赛2014年;
public class Question03 {
public static void main(String[] args) {
char[] arr = new char[2014];
int p = 0; //指针用来确定下标
for (int i = 1; i <= 106; i++) {
//循环106次
int ch = 96; //a的ASCII码值为97,这里设置96让其在下一个循环+1
for (int j = 1; j <= 19; j++) {
arr[p] = (char)(ch+j);
p++;//指针后移
}
}
System.out.println(delete(arr));
}
private static char[] delete(char arr[]) {
if (arr.length==1) {
//如果数组长度为1就结束递归
return arr;
}
char[] newArr = new char[arr.length/2]; //用来存放新的数组
int q = 0; //数组下标指针
for (int i = 1; i < arr.length; i=i+2) {
newArr[q] = arr[i];
q++;
}
return delete(newArr);
}
}
答案
q