一个渣渣的再次分享:
标题:猜字母
把abcd...s共19个字母组成的序列重复拼接106次,得到长度为2014的串。
接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。
得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。
答案是一个小写字母,请通过浏览器提交答案。不要填写任何多余的内容。
import java.util.ArrayList; public class 猜字母 { public static void main(String[] args) { StringBuffer sb = new StringBuffer();//比String多了一些好用的 方法 for(int i=0;i<106;i++) {//先造题目,生成拼接的106次 sb.append("abcdefghijklmnopqrs");//虽然是拼接的但是,每一个字母都有属于字的下标 } //System.out.println(sb.deleteCharAt(0)); while(sb.length()>1) {//就剩一个停止 for(int i=0;i<sb.length();i++) {//每次删除一个sb长度就会减少一个,然后i++,其实删除的恰好就是奇数 sb.deleteCharAt(i);//删除第i个元素 } } System.out.println(sb); } }
一渣一总结:
1、利用StringBuilder特性造题目
2、每次删除一个正好减的奇数的有趣现象(因为i++)