把abcd...s共19个字母组成的序列重复拼接106次,得到长度为2014的串。
接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。
得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。
接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。
得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。
答案是一个小写字母,请通过浏览器提交答案。不要填写任何多余的内容。
import java.util.ArrayList;
public class Test160303_2 {
public static void main(String[] args) {
String s ="abcdefghijklmnopqrs";
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < 106; i++) {
for (int j = 0; j < s.length(); j++) {
list.add(s.charAt(j) + "");
}
}
//System.out.println(list.size());
boolean flag = true;
while (flag) {
//出口,如果集合中只剩下一个元素,则找到了我们要找的最后一个字母
if(list.size() == 1){
flag = false;
continue;
}
//遍历整个集合,如果他的位置是奇数位置,把他的值设置成0,方便我们在下面批量删除
for (int i = 0; i < list.size(); i++) {
if(i%2 == 0){
//System.out.println(list.get(i));
list.set(i, "0");
}
}
//再次遍历整个集合,如果他的值是0,将其删除掉
for (int j = 0; j < list.size(); j++) {
if(list.get(j).equals("0")){
list.remove(j);
}
}
}
//输出答案
System.out.println(list.get(0));
}
}