猜字母(藍橋杯)

把abcd...s共19個字母組成的序列重複拼接106次,得到長度爲2014的串。

接下來刪除第1個字母(即開頭的字母a),以及第3個,第5個等所有奇數位置的字母。

得到的新串再進行刪除奇數位置字母的動作。如此下去,最後只剩下一個字母,請寫出該字母。

答案是一個小寫字母,請通過瀏覽器提交答案。不要填寫任何多餘的內容。


【答案】:q

解析:這個題只要字符串的總個數>1,那麼就把奇數位置的字符刪掉,所以只需要寫一個可以刪除奇數位置的函數並且得到刪除後的字符串即可,如果字符串的個數>1則繼續刪,直到一個字符爲止。

代碼如下:

public class 猜字母
{
	public static String Method(String s)
	{
		StringBuilder sb = new StringBuilder();
		for(int i=0,t=s.length();i<t;++i)
		{
			if((i+1)%2==0)   //奇數位刪除
			{
				sb.append(s.charAt(i));
			}
		}
		return sb.toString();  //返回刪除後的字符串
	}

	public static void main(String[] args)
	{
		String s = "abcdefghijklmnopqrs";   // a~s
		StringBuilder sb = new StringBuilder();   //動態操作字符串
		for(int i=0;i<106;++i)    //字符串s重複拼接106次
		{
			sb.append(s);
		}
		int n = sb.length();     // n = 2014
		String str = sb.toString();
		while(n!=1)    //只剩下最後一個字符時跳出循環
		{
			str = Method(str);  //Method方法返回的是刪除掉奇數位置後的字符串
			n = str.length();   //n爲刪除掉奇數位置後的字符串長度
		}
		System.out.println(str);  //輸出最後一個字符
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章