首页 > 试题广场 >

游戏海报

[编程题]游戏海报
  • 热度指数:9936 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
小明有 26 种游戏海报,用小写字母 "a" 到 "z" 表示。小明会把游戏海报装订成册(可能有重复的海报),册子可以用一个字符串来表示,每个字符就表示对应的海报,例如 abcdea 。小明现在想做一些“特别版”,然后卖掉。特别版就是会从所有海报(26种)中随机选一张,加入到册子的任意一个位置。
那现在小明手里已经有一种海报册子,再插入一张新的海报后,他一共可以组成多少不同的海报册子呢?

数据范围:输入的字符串长度满足

输入描述:
海报册子的字符串表示


输出描述:
一个整数,表示可以组成的不同的海报册子种类数
示例1

输入

a

输出

51

说明

我们可以组成 'ab','ac',...,'az','ba','ca',...,'za' 还有 'aa', 一共 51 种不同的海报册子。 
import java.util.Scanner;

public class Main {
	
	public static int gameBill(String str){
		int len = str.length();
		if(len < 1 || len > 20){
			return 0;
		}
		// 有 len+1 个空位置可以插入新海报(26种字符可选),有 len 组重复的数据需要去掉
		return 26 * (len + 1) - len;
	}

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String str = sc.next();
		System.out.println(gameBill(str));
                sc.close();
	}

}

编辑于 2020-08-10 17:29:08 回复(0)
哈哈,枚举
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

/**
 * @Date: 2020-04-29 21:42
 * @version: 1.0
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        StringBuilder temp = new StringBuilder(s);
        Set<String> ss = new HashSet<>();
        for (int i = 'a';i<='z';i++){
            for (int j=0;j<=s.length();j++){
                ss.add(temp.insert(j,(char)i).toString());
                temp = new StringBuilder(s);
            }
        }
        System.out.println(ss.size());
    }
}


发表于 2020-04-29 22:23:08 回复(0)
package nowcoder.demo04;

import java.util.Scanner;

public class Main {
    
    /**
     * 运行时间:41ms
     *
     * 占用内存:10452k
     * */
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String next = scanner.next();
        int length = next.length();
        System.out.println((length+1)*26-length);
    }
}

发表于 2020-02-28 20:43:25 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String s = in.next();
        int len = s.length();
        int count = (len + 1)*26 - len; 
        System.out.println(count);
        
    }
}

发表于 2019-11-11 20:04:45 回复(0)
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);


    }
}

欢迎各位指点批评。
发表于 2019-11-06 22:30:40 回复(1)
就是找规律,输入为一个字符时,左右两边都可以插入26个字符中的一个,然后减去重复的(比如左插入aa,右插入aa),两个字符时三个插入点,_a_b_ ,26*3-3 
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        String str = s.next();
        int n = str.length(); // 输入的字符串长度
        
        // 非法输入处理
        if (n < 1 || n>20) {
            System.out.println("非法输入");
            return;
        }
        
        System.out.println(26*(n+1)-n);
    }
}


发表于 2019-08-08 15:47:26 回复(0)
JAVA解答:这道题粗略的看有点难,不过把a,ab,aa,abc等列出来后就会发现,实际上就是(字母个数+1)25+1;找规律罢了。
import java.util.Scanner;
    
public class Main {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        String str = input.nextLine();
        int len = str.length();
        int sum = (len+1)*25+1;
        System.out.println(sum);
    }
}

编辑于 2019-08-02 19:34:13 回复(0)