1、问题描述
把abcd...s共19个字母组成的序列重复拼接106次,得到长度为2014的串。
接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。
得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。
2、代码实现
public class Main {
public static void main(String[] args) {
String s = "abcdefghijklmnopqrs";
StringBuffer sb = new StringBuffer();
for(int i = 0;i < 106;i++) {
sb.append(s);
}
while(sb.length() > 1) {
int len = sb.length() / 2;
if(sb.length() % 2 != 0) {
len++;
}
//删除一个字符后,后面的字符都会往前移动一位
for(int i = 0;i < len;i++) {
sb.deleteCharAt(i);
}
}
System.out.println(sb);
}
}