第五屆藍橋杯大賽省賽真題-填空題-猜字母(Java實現)
阿新 • • 發佈:2021-01-25
猜字母
把abcd...s共19個字母組成的序列重複拼接106次,得到長度為2014的串。
接下來刪除第1個字母(即開頭的字母a),以及第3個,第5個等所有奇數位置的字母。
得到的新串再進行刪除奇數位置字母的動作。如此下去,最後只剩下一個字母,請寫出該字母。
答案是一個小寫字母,請通過瀏覽器提交答案。不要填寫任何多餘的內容。
解題思路:
String會記憶體溢位,用StringBuilder,StringBuilder的好處就是修改多次有優勢
String、StringBuffer和StringBuilder的區別:
- String類是不可變類,即一旦一個String物件被建立以後,包含在這個物件中的字元序列是不可改變的,直至這個物件被銷燬。
- StringBuffer物件是一個字元序列可變的字串,它沒有重新生成一個物件,而且在原來的物件中可以連線新的字串
- StringBuilder類也代表可變字串物件.StringBuffer是執行緒安全的,而StringBuilder則沒有實現執行緒安全功能,所以效能略高。
package 第五屆省賽;
public class _1猜字母 {
public static void main(String[] args) {
StringBuilder s = new StringBuilder("abcdefghigklmnopqrs");
for(int i=1; i<=105;i++)
s.append("abcdefghijklmnopqrs");
while(s.length()>1) {
// System.out.println("長度:"+s.length());
StringBuilder s1 = new StringBuilder();
for(int i=1; i<s.length(); i+=2)
s1.append(s.charAt(i));
s = s1;
}
System.out.println(s);
}
}
結果
q