编程题一

大概意思是,给一段字符串,然后统计该字符串中相同字符个数,并以字符串+该字符串个数组合排列成新的字符串。如输入" sssdhibdhidhi " ,需要返回结果 "s3d3h3i3b1"。话不多说,直接上代码:

import java.util.*;public class Main {public static void main(String[] args) {LinkedHashMap<Character,Integer> hashMap = new LinkedHashMap<>();String str = "sssdhibdhidhi";for (char c: str.toCharArray()) {if (hashMap.containsKey(c)) {hashMap.put(c,hashMap.get(c) + 1);} else {hashMap.put(c,1);}}for (Character character : hashMap.keySet()) {System.out.printf("%s%s",character,hashMap.get(character));}}
}

编程题二

大概意思是 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

candidates 中的每个数字在每个组合中只能使用一次。

说明:

所有数字(包括目标数)都是正整数。
解集不能包含重复的组合。

示例 1:

输入: candidates = [10,1,2,7,6,1,5], target = 8,
所求解集为:
[
  [1, 7],
  [1, 2, 5],
  [2, 6],
  [1, 1, 6]
]

实现代码如下:


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class Main {public static void main(String[] args) {int[] candidates = {2,6,1,7,4,9};System.out.println(combinationSum(candidates,20));}static List<List<Integer>> lists = new ArrayList<>();public static List<List<Integer>> combinationSum(int[] candidates, int target) {Arrays.sort(candidates);//对数组进行排序if (candidates == null || candidates.length == 0 || target < 0) {return lists;}List<Integer> list = new ArrayList<>();dfs(list, candidates, target, 0);return lists;}private static void dfs(List<Integer> list, int[] candidates, int target, int start) {//递归的终止条件if (target < 0) {return;}if (target == 0) {lists.add(new ArrayList<>(list));} else {for (int i = start; i < candidates.length; i++) {//因为这个数和上个数相同,所以从这个数开始的所有情况,在上个数里面都考虑过了,需要跳过if (i != start && candidates[i] == candidates[i - 1]) {continue;}list.add(candidates[i]);dfs(list, candidates, target - candidates[i], i + 1);list.remove(list.size() - 1);}}}
}

思路说明:

以{1, 1, 2, 5, 6, 7},target = 8 为例模拟一下解题流程
首先排个序,是为了以后能方便的剪枝以及跳过重复的解

遍历数组,进行累加,若小于 8 就继续遍历,得到 [1, 1, 2]
下一个 5 添加进来后就大于 8 了,所以直接 break 这次遍历,并从列表中退出 2,然后从2的下一个元素继续遍历,得到 [1, 1, 5]
下一个 6 添加进来后大于 8,所以去掉 5,从将5 后一个元素继续得到 [1, 1, 6],判断等于 8,所以保存该解,因为已经排好了序,所以后面的元素不用再看了,就 break这次循环
这时列表中只有 [1, 1], 将第二个 1 退出,从它的后一个元素开始遍历,得到 [1, 2, 5],保存该解并break这次循环
退出2,从它的下一个元素开始,得到[1, 5]
下一个 6 添加进来后大于 8,所以去掉5,添加6,得到[1, 6]
下一个 7 添加进来后大于 8,所以去掉6,添加7,得到[1, 7],保存该解并break这次循环
退出1,从它下一个元素开始,因为下一个元素还是1,所以跳过它,再下一个元素是2,于是从2开始得到[2, 5]
下一个 6 添加进来后大于 8,所以去掉5,添加6,得到[2, 6],保存该解并break这次循环
退出2,从它下一个元素 5 开始,得到 [5]
下一个 6 添加进来后大于 8,所以去掉5,添加6,得到 [6]
下一个 7 添加进来后大于 8,所以去掉6,添加7,得到 [7]

更多笔试题持续更新中....

「笔试题」最近做了一个招银网络科技Java岗位在线笔试题,给有需要的朋友了解学习一下!相关推荐

  1. 招银网络科技java春招二面_招银网络科技 2019春招笔试题复盘

    因本人刚开始写博客,学识经验有限,如有不正之处望读者指正,不胜感激:也望借此平台留下学习笔记以温故而知新.这篇博客是复盘回忆招银网络科技2019春招的笔试试题类型,相关岗位:算法工程师. 简要介绍:时 ...

  2. 一个妹子的招银网络科技Java后台开发面经

    基本情况 妹子985非科班硕士,秋招Java后台开发,先后投递了招银网络科技,招行***中心,招行总行的岗位和招行杭州分行. 招行有很多机构,这些机构之间可同时投递多个,面试可并行进行,也可以同时拿多 ...

  3. 招银网络科技笔试题:数字分解

    之前都在leetcode刷题,有些文章直接保存到上面去了,这是今天做招银的测试题中的一个,先说一下题目的大概意思. 给定一个整数,要求输出关于这个整数的各种数字相加的组合: 1:0种 2:0种 3:3 ...

  4. 招银网络软件测试合肥面试题,【招银网络科技面试|面试题】-看准网

    面试官的问题: 问看到简历中的项目,简单介绍一下用到的框架 答这个项目主要是学校实训的项目,给的选题去做的,使用到了SSH的三个框架.其中Spring主要使用了IoC功能,利用Spring的Bean容 ...

  5. 招银网络科技2018秋招试题

    一.单选题 1.在表Dept(Dno,Dname,Tele)中,为了尽量减小存储空间,字段Dname存储长度在6-18之间,以下设置的字段类型哪个最合适(B) A Varchar(10) B Varc ...

  6. 「实战篇」开源项目docker化运维部署-后端java部署(七)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:「实战篇」开源项目docker化运维部署-后端java部署(七) 本节主要说说后端的部署需要注意的点,本身renren-fas ...

  7. AI算力需求6年增长30万倍,「超异构计算」才能满足下一个10年

    今年 3 月,「强化学习教父」Richard Sutton 在<苦涩的教训>一文中指出,「70 年的人工智能研究史告诉我们,利用计算能力的一般方法最终是最有效的方法.要在短期内有所提升,研 ...

  8. 「华大基因」追风做BaaS平台,基因科技和区块链能碰撞出什么未来?

    编者按:4月3日起,针对网信办近期公布的境内区块链信息服务备案项目,Odaily星球日报推出「直击链企」栏目,对首批 197个已备案区块链信息技术全方位解读. 欢迎各方朋友关注支持,与我们一起把握区块 ...

  9. 穿上这件全球首款「隐形衣」,做这条街最「无脸」的仔;阿里给钱给资源,求解AI安全难题...

    金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 真的存在「隐形衣」吗? 在人脸识别无处不在的今天,这个倒是可以有. 只要穿上这么一件T恤,就能骗过人脸识别AI,从而达到「隐身」效果. 这就 ...

最新文章

  1. 【长篇连载】桌面管理演义 第六回 违规言论别乱发 访问控制把你抓
  2. “所有一切”和“介于之间”:欧美“新媒体”艺术
  3. Java Servlet总结
  4. 定时器和多线程的不同
  5. 大专计算机应用技术答辩,计算机应用技术专业硕士答辩.ppt
  6. C#实现局域网UDP广播
  7. wps怎么投递简历发到boss直聘_BOSS直聘角逐招聘季:装机量、下载增量、增长率三料冠军...
  8. 得天独厚的生态优势_云南农业得天独厚的三大优势
  9. python 大小端转换,大小端 python
  10. EasyTouch的使用
  11. SpringBoot-iText-Pdf
  12. MATLAB中的颜色控制
  13. kaprekar常数(6174猜想)
  14. 那句子太美,我不敢看
  15. web进销存源码-Java进销存ERP软件系统源码定制多仓库多门店 + 小程序 Saas多商户
  16. 最大公约数 (20 分) 第三个测试点
  17. 商品期货人数(期货品种数量)
  18. 基于单窗算法的地表温度反演算法
  19. 突然35岁:捡点我的职业生涯(转)
  20. 【Flutter】Flutter 如何实现开屏广告

热门文章

  1. 双飞翼HTML圣杯布局,Web前端:CSS中的圣杯布局与双飞翼布局
  2. Matlab学习日记(1)简单介绍与help界面
  3. 安装2008服务器系统,win2008服务器系统安装教程
  4. jar报错Invalid LOC header
  5. 在网页上播放声音文件的方式
  6. unity 人物走动声音_想问的问题是:因为想要写脚步声
  7. Selenium+Python如何定位鼠标悬停的元素
  8. 七次作业-团队作业——选题报告和需求规格
  9. GIS数据格式:Coverage
  10. 有刷电机驱动专题-直流有刷电机调速电路分析