蓝桥杯省赛真题2014年第五届Java本科B组第03题——猜字母

蓝桥杯省赛真题2014年第五届Java本科B组

第03题——猜字母

把abcd…s共19个字母组成的序列重复拼接106次,得到长度为2014的串。

接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。

得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。

答案是一个小写字母,请通过浏览器提交答案。不要填写任何多余的内容。

思路

按照题意创建数组,然后提取即可,注意数组边界

代码

package05届蓝桥杯省赛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

猜你喜欢

转载自blog.csdn.net/qq_43594119/article/details/108833956