BiliBili2020校招笔试题
第一批
1.最小操作次数
题目描述:
给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数。
你总共三种操作方法:
插入一个字符
删除一个字符
替换一个字符
输入例子1:
abc
abd
输出例子1:
1
例子说明1:
把c->d,只需要一次操作
题解:与leetcode1143一致,找到两个字符串最长公共子序列即可。
import java.util.Scanner;/*** 题目:将字符串a变成b,可以执行三种操作插入、删除、修改,求最少操作数*/
public class test01 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);String a=sc.nextLine();String b=sc.nextLine();int res=longResult(a,b);System.out.println(Math.max(a.length(),b.length())-res);}public static int longResult(String a,String b){char[] ch1=a.toCharArray();char[] ch2=b.toCharArray();int[][] dp=new int[ch1.length+1][ch2.length+1];for(int i=1;i<dp.length;i++){for(int j=1;j<dp[0].length;j++){if(ch1[i-1]==ch2[j-1])dp[i][j]=dp[i-1][j-1]+1;elsedp[i][j]=Math.max(dp[i-1][j],dp[i][j-1]);}}return dp[ch1.length][ch2.length];}
}
2.连续整数求和
题目描述:
给定一个正整数N,试求有多少组连续正整数满足所有数字之和为N? (1 <= N <= 10 ^ 9)
输入例子1:
5
输出例子1:
2
例子说明1:
5 = 5 = 2 + 3,共有两组连续整数([5],[2,3])求和后为 5。
题解:等差数列求和。
题目问题等价于:N=(a+a+k-1)k/2;【a指数列开始的数字,k指数列长度】
等价于:ak=N-(k-1)*k/2;
即要求:(k-1)*k/2<N && (N-(k-1)*k/2)能被k整除
import java.util.Scanner;/*** leetcode829* 题目:给定一个正整数N,试求有多少组连续正整数满足所有数字之和为N? (1 <= N <= 10 ^ 9)*/
public class test02 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int N=sc.nextInt();int res=CalMax(N);System.out.println(res);}public static int CalMax(int N){int count=0;for(int i=1;i*(i-1)/2<N;i++){int tmp=N-(i-1)*i/2;if(tmp%i==0)count++;}return count;}}
3.字符串切分
题目描述:
从标准输入读取字符串,按照指定的两层分隔符切分成多对key-value,依次输出到标准输出中。
注意:仅输出key和value都为非空串的pair。
输入例子1:
# : a:3#b:8#c:9
输出例子1:
3
a 3
b 8
c 9
题解:
- 先获取间隔符和关系符
- 用split(间隔符)得到分离后的字符串数组
- 用contains(关系符)检验各个字符串是否标准
- 用replace(关系符, 空格)输出
import java.util.Scanner;public class test03 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);String str=sc.nextLine();if(str.length()<4)System.out.println(0);else {char a = str.charAt(0);char b = str.charAt(2);String[] strs = str.substring(4).split(a + "");int len = strs.length;for (String s : strs) {if (!s.contains(b + ""))len--;}System.out.println(len);if (len > 0) {for (String s : strs) {if (s.contains(b + ""))System.out.println(s.replace(b, ' '));}}}}
}
第二批:
1.原地翻转句子中单词的顺序,但单词内字符的顺序不变。要求:空间复杂度O(1),时间复杂度O(n)。
public class Main{public String reverseWords(String s) {s=s.trim();StringBuilder sb=new StringBuilder();int i=s.length()-1,j=i;while (i>=0){while (i>=0 &&s.charAt(i)!=' ') i--;sb.append(s.substring(i+1,j+1)+" ");while (i>=0 &&s.charAt(i)==' ') i--;j=i;}return sb.toString().trim();}
}
2.输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。
import java.util.Arrays;public class Main {public String minNumber(int[] nums) {String[] str=new String[nums.length];for(int i=0;i<nums.length;i++){str[i]=String.valueOf(nums[i]);}Arrays.sort(str,(x,y)->(x+y).compareTo(y+x));StringBuilder sb=new StringBuilder();for (String s:str)sb.append(s);return sb.toString();}
}
3.有为N件物品,它们的重量w分别是w1,w2,…,wn,它们的价值v分别是v1,v2,…,vn,每件物品数量有且仅有一个,现在给你个承重为M的背包,求背包里装入的物品具有的价值最大总和?
public class Main{public int bag(int W,int N,int[] weight,int[] values){int[][] dp=new int[N+1][W+1];for(int i=0;i<dp.length;i++)dp[i][0]=0;for(int i=0;i<dp[0].length;i++)dp[0][i]=0;for(int i=1;i<dp.length;i++){for(int j=1;j<dp[0].length;j++){if(weight[i-1]>j)dp[i][j]=dp[i-1][j];elsedp[i][j]=Math.max(dp[i-1][j],dp[i-1][j-weight[i-1]]+values[i-1]);}}return dp[N][W];}
}
BiliBili2020校招笔试题相关推荐
- 关于python类的继承正确的说法是_2017美团点评的运维岗校招笔试题,测测你会几题?...
原标题:2017美团点评的运维岗校招笔试题,测测你会几题? 1.数据库:以下哪项不是HASH索引的特征? A MySQL不能确定在两个值之间大约有多少行 B 不能使用hash索引来加速ORDER BY ...
- 【美团校招笔试题】去除字符串首尾空格,中间多个空格只保留一个
要求: 这是本人参加美团校招在线考试笔试题,如果此行为违反了美团校招笔试题商业保密性,请与本人联系. 思路:用一个while循环扫描整个字符串,用pStart字符指针指向整个字符串首地址,如果遇到首部 ...
- 小米运维部14年校招笔试题A的个人答案
15年准备实习生面试时答的题,仅供参考 具体题目详见 http://www.tuicool.com/articles/eYRZBr http://noops.me/?p=1154 一.linux基础 ...
- 剑指Offer——腾讯+360+搜狗校招笔试题+知识点总结
剑指Offer--腾讯+360+搜狗校招笔试题+知识点总结 9.11晚7:00,腾讯笔试.选择题与编程.设计题单独计时. 栈是不是顺序存储的线性结构啊? 首先弄明白两个概念:存储结构和逻辑结构. 数据 ...
- java校招笔试题目_Java校招笔试题
2020校招笔试题答案及评分标准 满分100分 时间1小时 一.简答题: (5分)写出你用过的linux命令,举例说明其中几个的具体用法. 答案:略.评分标准:正确五个,1分一个. (5分)写出TCP ...
- 凑硬币(58同城2017校招笔试题)
凑硬币(58同城2017校招笔试题) 暴力破解,循环递归实现,代码如下: /** * 暴力破解,循环递归,找出了所有可能的组合并进行了存储,* 在循环递归的时候,因为选取的分类相互是有重叠的,生成的递 ...
- 剑指Offer——京东校招笔试题+知识点总结
剑指Offer--京东校招笔试题+知识点总结 笔试感言 经过一系列的笔试,发觉自己的基础知识还是比较薄弱的,尤其是数据结构和网络,还有操作系统.工作量还是很大的.做到精确制导的好方法就是在网上刷题,包 ...
- 数据分析真题日刷 | 欢聚时代2018校招笔试题-产品经理/数据分析/游戏运营/市场专员 A卷
今日真题 欢聚时代2018校招笔试题-产品经理/数据分析/游戏运营/市场专员 A卷(来源:牛客网) 题型 客观题:单选5道,不定项选择10道 主观题:问答4道 完成时间 90分钟 牛客网评估难度系数 ...
- 2020万得技术校招笔试题(软件开发)
2020万得技术校招笔试题(软件开发) 不定项选择题(共5题,时间5分钟) 1. 在浏览器中输入https://www.wind.com.cn, 其中https代表____ A. 地址 B. 资源 C ...
最新文章
- 062_html多媒体
- arouter跨module传递消息_消息队列中间件(二)使用 ActiveMQ
- C++ 标准库类型 set
- 【mysql学习】疑问点记录
- lesson1-python3运算符
- 直接用自己服务器做图床可以吗_我花 9 块钱搭了一个“私人图床”
- Exercise 12: Prompting People
- React Native之(var和let区别 )(简单解构)(map对象遍历)(可变顺序参数和不可以变顺序参数函数)
- 交接文档怎么写_如何最快速的交接工作
- 表情识别(五)--MBP+CNN
- Ubuntu 基础系列篇
- datagrid与jqgrid区别
- 韩顺平循序渐进学java 第18讲 查找
- Java面试:反射机制
- html 图片触碰有放大效果,CSS3 鼠标滑过图片突出放大效果
- sql脚本 windows导出 linux乱码,mysql query browser中文乱码的解决方法
- Mysql8数据库导到Mysql5数据库,报错Unknown collation: 'utf8mb4_0900_ai_ci'
- android开发代码实现对Apk签名,如何对apk进行签名
- Gartner发布2021年新兴技术成熟度曲线
- python程序中每条语句以分号结尾,在Python程序中,每条语句末尾必须添加分号。...