Java演算法試題--猜字母/殺人遊戲

來源:互聯網
上載者:User

標籤:java演算法   猜字母   

題目如下:

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

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

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

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

public class 猜字母 {    public static void main(String[] args) {        String str = "abcdefghijklmnopqrs";        String str1 = "";        for (int i = 0; i < 106; i++) {            str1 = str1 + str;        }        System.out.println(str1.length());        boolean[] arr = new boolean[str1.length()];        for (int i = 0; i < arr.length; i++) {            arr[i] = true;// 下標為TRUE時說明字母還在圈裡        }        int leftCount = str1.length();        int countNum = 0;        int index = 0;        while (leftCount > 1) {            if (arr[index] == true) {// 當在圈裡時                if (countNum % 2 == 0) {// 下標為偶數時                    arr[index] = false;// 該字母退出圈子                    leftCount--;// 剩餘字母數目減一                }                countNum++;            }            index++;// 每報一次數,下標加一            if (index == str1.length()) {// 是迴圈數數,當下標大於n時,說明已經數了一圈,                index = 0;// 將下標設為零重新開始。                countNum = 0;            }        }        // 列印出最後一個                                                                                                                                                                                           for (int i = 0; i < str1.length(); i++) {            if (arr[i] == true) {                System.out.println(i);// 輸出結果表示下標為1023(第1024個)的字母,即:q            }        }    }}

第二種解法:

public class 猜字母1 {    public static void main(String[] args) {        String str2 = "";        String str = "abcdefghijklmnopqrs";        for (int i = 0; i < 105; i++) {            str = str + "abcdefghijklmnopqrs";        }        System.out.println(str.length());        while (str.length() != 1) {            for (int i = 0; i < str.length(); i++) {                if (i % 2 == 1) {                    str2 += str.charAt(i);                }            }            str = str2;            str2 = "";            System.out.println(str);        }    }}

相對而言第二種更好理解,答案更容易找到

Java演算法試題--猜字母/殺人遊戲

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.