您的位置:首页 > 其它

蓝桥杯 历届试题 猜字母

2016-03-05 19:15 281 查看
把abcd...s共19个字母组成的序列重复拼接106次,得到长度为2014的串。

接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。

得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。


答案是一个小写字母,请通过浏览器提交答案。不要填写任何多余的内容。

用两个string 一个保存改变前,一个保存改变后。注意,不能只用一个,因为每次每保留一个字符,string都会发生改变。

package holiday;

import java.util.Scanner;

public class acc {

public static void main(String args[])
{
String str1="";
String str2="";
for(int i=0;i<106;i++)
{
str1+="abcdefghijklmnopqrs";
}
while(str1.length()>1)
{
for(int i=1;i<str1.length();i+=2)
{
str2+=str1.charAt(i);
}
str1=str2;
str2="";
}
System.out.println(str1);
}
}


本来想着vector也可以做,但结果做错了,下面是错误代码:

错误原因:

vector中每删掉一个元素,后面的元素都会自动前移,会改变原有元素的位置。而题目本来的意思是一次把所有奇数位置的删掉。

package holiday;

import java.util.Scanner;
import java.util.Vector;

public class A {

public static void main(String args[])
{
Vector v=new Vector();
for(int i=1;i<=106;i++)
{
for(int j=0;j<19;j++)
{
char c=(char) (j+'a');
v.add(c);
}
}
while(v.size()>=1)
{
for(int i=0;i<v.size();i+=2)
{
v.remove(i);
}
}
System.out.println(v.get(0));
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: