快手校招真题三
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);
}
}
}
}