标题:猜字母
把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);
}
}
运行结果: