編程題-遊戲海報'

今天刷牛客網時,有一點編程題,各位大佬都是發現規律的。我就來一個代碼實現,若有出錯,歡迎指點批評。

題目:

鏈接:https://www.nowcoder.com/questionTerminal/6a6a0e4d6dfa4d89acd73bdfec79cf28?toCommentId=4887139來源:牛客網

輸入描述:
海報冊子的字符串表示,1 <= 字符串長度<= 20
輸出描述:
一個整數,表示可以組成的不同的海報冊子種類數

示例1

輸入

a

輸出

51

說明

我們可以組成 'ab','ac',...,'az','ba','ca',...,'za' 還有 'aa', 一共 51 種不同的海報冊子。

代碼實現:

package cn.bubbletg2.t01;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        String s = new Scanner(System.in).next();
        int length = s.length();
        if (length < 1 || length >= 20) return;
        int j = 0;
        for (int i = 1; i <= 26; i++) {
            /**
             * length + 1  表示每次可以插入位置個數, 只有一個 a   -a- 可以 ab  或者ba   兩個位置
             *              長度爲2時。  -a-b-   插入位置爲3
             *
             * 爲什麼要26次?因爲題目中已經給出 aa 也算,所有 其實相當於26個都可以進行。
             */
            j += (length + 1);
        }
        /**
         *爲什麼j- length   如題,    _a_   可以前後兩個位置插入,但是插入a 時, aa 與 aa 算同一個
         *                      若 _a_b_    我們插入一個a   可能結果有    aab   aab  aba   我們在插入一個b    aab abb abb
         *                      可以發現:  aab  與 aab   和 abb abb 重複了    長度爲多少,重複多少次。所以減去長度。
         */
        System.out.println(j - length);


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