玩转大数据大数据算法与实战

快手校招真题三

2020-05-18  本文已影响0人  Tim在路上

快手 游戏海报

题目描述
小明有26种游戏海报,用小写字母"a"到"z"表示。小明会把游戏海报装订成册(可能有重复的海报),册子可以用一个字符串来表示,每个字符就表示对应的海报,例如abcdea。小明现在想做一些“特别版”,然后卖掉。特别版就是会从所有海报(26种)中随机选一张,加入到册子的任意一个位置。
那现在小明手里已经有一种海报册子,再插入一张新的海报后,他一共可以组成多少不同的海报册子呢?
输入描述:
海报册子的字符串表示,1 <= 字符串长度<= 20
输出描述:
一个整数,表示可以组成的不同的海报册子种类数

a

51
import java.util.*;

public class Main {

    // 思路 现在想一个顺序中插入一个字符一共有多少种插入方式
    // 使用格挡法,5 个字符有 6 个位置,但是 如果存在字符相同的情况,abb abb 需要减去一种

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String line = in.nextLine();
        System.out.println((line.length()+1)*26 - line.length());
    }
}

合并数组

题目描述
请实现一个函数,功能为合并两个升序数组为一个升序数组

输入描述:
输入有多个测试用例,每个测试用例有1-2行,每行都是以英文逗号分隔从小到大排列的数字
输出描述:
输出一行以英文逗号分隔从小到大排列的数组

1,5,7,9
2,3,4,6,8,10

1,2,3,4,5,6,7,8,9,10

注意这里要处理只有一个输入的情况,否则会卡 80%


import java.util.*;

public class Main {

    // 思路 现在想一个顺序中插入一个字符一共有多少种插入方式
    // 使用格挡法,5 个字符有 6 个位置,但是 如果存在字符相同的情况,abb abb 需要减去一种

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()){
            String lines1 = in.nextLine();
             if(!in.hasNext()){
                System.out.println(lines1);
                return;
            }
            String lines2 = in.nextLine();
            String[] line1 = lines1.split(",");
            String[] line2 = lines2.split(",");
            int p = 0, q = 0;
            StringBuilder res = new StringBuilder();
            int len = line1.length + line2.length;
            while (p < line1.length && q < line2.length){
                int x = Integer.parseInt(line1[p]);
                int y = Integer.parseInt(line2[q]);
                if ( x < y) {
                    if(q + p == len - 1){
                        res.append(line1[p++]);
                    }else {
                        res.append(line1[p++]).append(",");
                    }
                }else{
                    if(q + p == len - 1){
                        res.append(line2[q++]);
                    }else {
                        res.append(line2[q++]).append(",");
                    }
                }
            }
            while (p < line1.length){
                if(q + p == len - 1){
                    res.append(line1[p++]);
                }else {
                    res.append(line1[p++]).append(",");
                }
            }
            while (q < line2.length){
                if(q + p == len - 1){
                    res.append(line2[q++]);
                }else {
                    res.append(line2[q++]).append(",");
                }
            }
            System.out.println(res.toString());
        }
    }
}

字符串包含

我们定义字符串包含关系:字符串A=abc,字符串B=ab,字符串C=ac,则说A包含B,A和C没有包含关系。
输入描述:
两个字符串,判断这个两个字符串是否具有包含关系,测试数据有多组,请用循环读入。
输出描述:
如果包含输出1,否则输出0.

abc ab

1

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()){
            String line = in.nextLine();
            String[] lineArray  = line.split(" ");
            if (lineArray[0].contains(lineArray[1]) || lineArray[1].contains(lineArray[0])){
                System.out.println(1);
            }else {
                System.out.println(0);
            }
        }
    }


}

上一篇 下一篇

猜你喜欢

热点阅读