1. 程式人生 > >第五屆藍橋杯Java題目:猜字母

第五屆藍橋杯Java題目:猜字母

標題:猜字母

    把abcd...s共19個字母組成的序列重複拼接106次,得到長度為2014的串。

    接下來刪除第1個字母(即開頭的字母a),以及第3個,第5個等所有奇數位置的字母。

    得到的新串再進行刪除奇數位置字母的動作。如此下去,最後只剩下一個字母,請寫出該字母。

    答案是一個小寫字母,請通過瀏覽器提交答案。不要填寫任何多餘的內容。

第一種方法:運用java.util.ArrayList類

import java.util.ArrayList;
public class test{
	public static void main(String args []) {
		ArrayList<Character> list=new ArrayList<Character>();
		for(int i=0;i<106;i++) {
			for(int j=0;j<19;j++) {
				char temp='a';
				temp=(char)(temp+j);
				list.add(temp);
			}
		}
		for(int a=0;a<19;a++)
			System.out.print(list.get(a)+" ");
		System.out.println();
		while(list.size()>1) {
			for(int i=0;i<list.size();i+=1) {
				list.remove(i);//移除奇數位,因為每次移除後要重新排列陣列,所以+1
			}
			System.out.println(list.size()+","+list.get(0));
		}
	System.out.println(list.size()+","+list.get(0));
	}
}
執行結果:

第二種方法:運用StringBuffer類

public class test{
	public static void main(String args []) {
		StringBuffer list=new StringBuffer();
		for(int i=0;i<106;i++) {
			for(int j=0;j<19;j++) {
				char temp='a';
				temp=(char)(temp+j);
				list.append(temp);
			}
		}
		System.out.print(list);
		System.out.println();
		while(list.length()>1) {
			for(int i=0;i<list.length();i+=1) {
				list.delete(i,i+1);//跟第一種方法一樣
			}
			System.out.println(list.length()+","+list);
		}
	System.out.println(list.length()+","+list);
	}
}

執行結果: