第五屆藍橋杯Java題目:猜字母
阿新 • • 發佈:2019-02-17
標題:猜字母 把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); } }
執行結果: