0
点赞
收藏
分享

微信扫一扫

第五届蓝桥杯JavaB组第三题:猜字母

Resin_Wu 2022-02-28 阅读 57

第五届蓝桥杯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);
	}
}
举报

相关推荐

0 条评论