第五届蓝桥杯JavaB组第三题:猜字母
- 题目描述:
把abcd…s共19个字母组成的序列重复拼接106次,得到长度为2014的串。
接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。
得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。
答案是一个小写字母,请通过浏览器提交答案。不要填写任何多余的内容。
- 解析:
- 首先要考虑一个合适的容器存放字母串1
- 在这里,使用了StringBuilder,因为它的可变性,不同于数组的是,该类删除一个子串后会将后面的默认前移。
- 初始化为字符串1
- 所以,当我们删除第一个字符的时候,得到了一个全新的字符串2
- 且对于字符串1来说删除的第3个位置变成了删除字符串2的第2个位置,删除之后得到字符串3
- 对于字符串1来说,删除第5个位置的字符串变成了删除字符串3的第3个位置
- 以此类推…
- 上代码
public class Main03 {
//猜字母
public static void main(String[] args) {
// TODO Auto-generated method stub
StringBuilder sb = new StringBuilder();
for(int i=1;i<=106;i++) {
sb.append("abcdefghijklmnopqrs");
}
while(sb.length()!=1) {
for(int i=0;i<sb.length();i++) {
sb.deleteCharAt(i);
}
}
System.out.println(sb);
}
}