GLYWX level
获赞
27
粉丝
14
关注
8
看过 TA
508
西南交通大学
2026
Java
IP属地:浙江
暂未填写个人简介
私信
关注
05-23 17:41
已编辑
西南交通大学 Java
面得最久的一次,一共一个半小时,java基础,jvm,集合,spring,mybatis,数据库,Linux,计网都有涉及下面是手撕题一开始是这道题/*重构字符串给定一个字符串 s ,检查是否能重新排布其中的字母,使得两相邻的字符不同。返回 s 的任意可能的重新排列。若不可行,返回空字符串 "" 。示例 1:输入: s = "aab"输出: "aba"示例 2:输入: s = "aaab"输出: ""提示:1 <= s.length <= 500s 只包含小写字母*/感觉短时间内写不出来,然后问面试官能不能换题,面试官换了一题之后才写出来的下面是换过的题/*公共字符按ASCII码升序输出所有符合要求的字符; 如果没有符合要求的字符,则输出空列表[]。样例1输入:2 ["aabbccFFFFx2x2", "aaccddFFFFx2x2", "aabcdFFFFx2x2"]输出:["2", "F", "a", "x"]解释:字符 a 在三个字符串中都出现 2次,符合要求;字符 b 在第二三个字符串中分别出现 0次、1次,不符合要求;字符 c 在第三个字符串中出现 1次,不符合要求;字符 d 在第三个字符串中出现 1次,不符合要求;字符 F 在三个字符串中都出现了 4 次,符合要求;字符 x 在三个字符串中都出现了 2 次,符合要求;字符 2 在三个字符串中都出现了 2 次,符合要求;因此字符 a、F、x、2符合要求,按ASCII码升序输出*/代码实现public class Test {static char[] commonChars(int count, List<String> strings) {int[][] counts = new int[strings.size()][128];//记录每个字符出现的次数for(int i = 0; i < strings.size(); i++) {String tmp = strings.get(i);char[] charArray = tmp.toCharArray();//记录当前字符串所有字符出现的次数for(int j = 0; j < charArray.length; j++) {counts[i][charArray[j]]++;}}//定义变量记录符合条件的字符个数int resCount = 0;List<Character> res = new ArrayList<>();for(int j = 0; j < 128; j++) {//判断当前字符是否符合次数要求boolean state = true;for(int i = 0; i < strings.size();i++) {if(counts[i][j] < count) {state = false;break;}}if(state) {resCount++;res.add((char)(j));}}char[] resArr = new char[resCount];for(int i = 0; i < resCount; i++) {resArr[i] = res.get(i);}return resArr;}public static void main(String[] args) {int k = 2;List<String> strings = new ArrayList<>();strings.add("aabbccFFFFx2x2");strings.add("aaccddFFFFx2x2");strings.add("aabcdFFFFx2x2");char[] res = commonChars(k, strings);Arrays.sort(res);for(char c:res) {System.out.print(c + " ");}}}
查看2道真题和解析
0 点赞 评论 收藏
分享
05-22 17:56
已编辑
西南交通大学 Java
投递腾讯等公司10个岗位
0 点赞 评论 收藏
分享
05-28 23:47
已编辑
西南交通大学 Java
一、项目相关二、Java线程池提交任务的过程线程池拒绝策略为什么工作线程数大于核心线程数并且小于核心线程数时不直接创建线程去处理任务三、Redis你了解或者使用过的数据结构讲一下Zset你使用分布式锁的命令四、手撕45°打印数组比如数组是:1    2    3    4    56    7    8    9    1011    12    13    14    15打印顺序就是1,2,6,3,7,11,4,8,12,5,9,13,10,14,15最后手撕没做出来,可以说是很不应该了,也刷了很久的算法题,其实就是一个很简单的模拟过程,感觉有点可惜。-----5.28更新----public class Test1 {public static void main(String[] args) {int m = 3;int n = 5;int count = 0;int[][] nums = new int[m][n];for(int i = 0; i < m; i++) {for(int j = 0; j < n; j++) {count++;nums[i][j] = count;}}//第一行往左下打印for(int k = 0; k < n; k++) {for(int i = 0, j = k; i < m && j >= 0; i++, j--) {System.out.print(nums[i][j] + ",");}}//最后一列往左下打印for(int k = 1; k < m; k++) {for(int i = k,j = n -  1; i < m && j >= 0; i++, j--) {if(i == m - 1 && j == n - 1) {System.out.print(nums[i][j]);}else {System.out.print(nums[i][j] + ",");}}}}}
查看7道真题和解析
0 点赞 评论 收藏
分享
枪枪爆头好运连连:哈哈 第一题20 第二题不会 第三题5 完蛋了
投递蚂蚁集团等公司10个岗位
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务