2019/10/13中国工商银行笔试编程题
1、字符串压缩问题。输入字符串aabccc,输出 a2bc3
答案见链接:https://mp.csdn.net/postedit/
/*** Main_String_get_rid_of_dumplication*/
import java.util.Scanner;
public class Main_String_get_rid_of_dumplication {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(sc.hasNext()){StringBuffer sb = new StringBuffer();String s = sc.nextLine();char[] ch = s.toCharArray();int count=1;for(int i=0; i<ch.length-1; i++){if(ch[i] == ch[i+1]){count++;}else{sb.append(String.valueOf(ch[i]));if(count > 1){sb.append(count);count = 1;}}}//最后一个的字母,不管是否有相同的字母出现,前面的语句都没append都sb.append(String.valueOf(s.charAt(ch.length-1)));if(count > 1){sb.append(String.valueOf(count));}System.out.println(sb.toString());}}
}
测试用例:
aabbbcccd
a2b3c3d
abbcddd
ab2cd3
aab ccddf
a2b c2d2f
2、完全平方数:给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...
)使得它们的和等于 n。其中每个平方数不能重复,且要求输出的结果从小到大;若不存在这样的平方数,则输出NULL。
样例1:
输入:
17
输出:
1 16
样例2: (虽然12 = 4 + 4 + 4,但是题目要求的是不重复的数字)
输入:
12
输出:
NULL
思路:
利用贪心算法,每次把最大的值加入栈(用栈是栈先进后出的特点,可以输出从小到大的结果)
import java.util.Scanner;
import java.util.Stack;
public class Main_PerfectSquare {public static void main(String[] args) {Stack<Integer> stack = new Stack();Scanner sc = new Scanner(System.in); while(sc.hasNextInt()){ int in = sc.nextInt();//贪心算法for(int i=(int)Math.sqrt(in); i>=1; i--){in -= i*i;if(in >= 0){stack.push(i*i);}//若减后的数值小于0,则恢复到原来数值的大小if(in < 0){in += i*i;}}//如 21=16+4+1,in=0if(in == 0){while(!stack.isEmpty()){System.out.print(stack.pop() + " ");} }//如22=16+4+1 +"1",in=1,则输出NULLelse{System.out.println("NULL");}} }
}
测试用例:
17
1 16
21
1 4 16
22
NULL
24
NULL
原题是完全平方数:给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...
)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少(Leetcode 279,题目链接:https://leetcode-cn.com/problems/perfect-squares)
示例 1:
输入: n = 12
输出: 3
解释: 12 = 4 + 4 + 4.
示例 2:
输入: n = 13
输出: 2
解释: 13 = 4 + 9.
思路:
标签:动态规划
- 首先初始化长度为n+1的数组dp,每个位置都为0
- 如果n为0,则结果为0
- 对数组进行遍历,下标为i,每次都将当前数字先更新为最大的结果,即dp[i]=i, 比如i=4,最坏结果为4=1+1+1+1即为4个数字
- 动态转移方程为:dp[i] = MIN(dp[i], dp[i - j * j] + 1),i表示当前数字,j*j表示平方数
- 时间复杂度:O(n*sqrt(n)),sqrt为平方根
class Solution {public int numSquares(int n) {int[] dp = new int[n+1];//默认初始化为0for(int i=1; i<=n; i++){dp[i] = i;//最坏的情况就是每次+1for(int j=1; i- j*j >=0; j++){dp[i] = Math.min(dp[i], dp[i - j*j]+1); }}return dp[n]; }
}
3、给定平面上的n个点,求最多有多少个点共线
class Solution {public int maxPoints(int[][] points) {if(points.length < 3) return points.length;int maxPoints = 2;for(int i=0; i<points.length-1; i++){for(int j=i+1; j<points.length; j++){long x1 = points[i][0], y1 = points[i][1];long x2 = points[j][0], y2 = points[j][1];if(x1==x2 && y1==y2){//如果重复,则(x2,y2)取和(x1,y1)不同的任意一点x2--;y2--;}int temp = 0;for(int k=0; k<points.length; k++){long x = points[k][0];long y = points[k][1];if((y - y1)*(x2 - x1) == (y2 - y1)*(x-x1)){temp++;}}maxPoints = Math.max(maxPoints, temp); }}return maxPoints;}
}
2019/10/13中国工商银行笔试编程题相关推荐
- 农行2021计算机专业面试题,【面经】2021 中国农业银行 笔试编程题
[面经]2021 中国农业银行 笔试编程题 2020年09月01日 | 萬仟网科技 | 我要评论 微信搜索:编程笔记本.获取更多干货!微信搜索:编程笔记本.获取更多干货!点击上方蓝字关注我,我们一起学 ...
- 字节跳动2019春招第二次笔试编程题
字节跳动2019春招第二次笔试编程题 1.变身程序员 题目描述 输入描述 输出描述 示例 示例1 示例2 示例3 分析 参考代码 2.特征提取 题目描述 输入描述 输出描述 示例 示例1 备注 分析 ...
- 【面经】2021 中国农业银行 笔试编程题
微信搜索:编程笔记本.获取更多干货! 微信搜索:编程笔记本.获取更多干货! 点击上方蓝字关注我,我们一起学编程 欢迎小伙伴们分享.转载.私信.赞赏 1 火星文表示法 题目描述: 微信搜索:编程笔记本. ...
- 科大讯飞2019秋招研究算法笔试编程题
第一题 样例输入 2 5 60 59 20 30 90 100 5 60 59 20 10 10 100 样例输出 1 2 Hint 对于第一组数据,将59改成60即可 AC代码: def minst ...
- 快手2019春招笔试编程题
快手2019春招笔试编程题 第一题 输入描述 输出描述 分析 代码 第二题 输入描述 输出描述 分析 代码 第三题 输入描述 输出描述 分析 代码 个人主页:http://redtongue.cn o ...
- 2019年秋招猿辅导笔试编程题解析字符串
猿辅导笔试 编程题的解析字符串 5 A11B (AA)2A ((A2B)2)2G (YUANFUDAO)2JIAYOU A2BC4D2 输入如上,按照规则解析字符串 研究了下用栈写出来了,其实不难,加 ...
- C++笔试编程题1:雀魂启动
2019字节跳动笔试编程题 雀魂启动 小包最近迷上了一款叫做雀魂的麻将游戏,但是这个游戏规则太复杂,小包玩了几个月了还是输多赢少. 于是生气的小包根据游戏简化了一下规则发明了一种新的麻将,只留下一种花 ...
- java常见笔试编程题(一)
java常见笔试编程题(一) 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串.但是要保证汉字不被截半个,例如"人abc",应该截为"人ab& ...
- 网易笔试编程题java_2017年网易校招笔试JAVA研发编程题
为什么80%的码农都做不了架构师?>>> 尝试挑战了下网易2017校招的笔试编程题,共三题,AC第一题,第二题思考了很久勉强用一种low逼的方式完成,第三题没有完成,希望路过的ACM ...
- 经典笔试编程题--Java实现
转载自 经典笔试编程题--Java实现 1.输入一个正数n,输出所有和为n的连续正数序列. 分析:设定两个指针,min指向和为n的连续正数序列的最小值,max指向和为n的连续正数序列最大值.sum ...
最新文章
- ?:在正则表达式中什么意思
- 图片增强来解决图片不足问题
- html表ge模板_16款用户体验优秀的HTML CSS价格表格模板 附演示及下载
- 关于微信 setData 回调函数中的坑
- 答读者问(6):有关IT培训和毕业之前的迷茫等问题
- 75. Sort Colors - LeetCode
- WPS最大的败笔是“免费用,广告弹窗”,难怪用户纷纷使用office
- html语言制作静态网页,html+css制作的漂亮静态网页
- 月入1W+的自媒体达人都会用到的运营工具
- 对于Ajax在MUI框架中的用运以及单 webview 模式中的下拉刷新功能探究
- 读《天才在左 疯子在右》有感
- 金彩教育:高转化详情页怎么优化
- 【看表情包学Linux】进程阻塞 | 轮询检测 | 基于非阻塞等待的轮询方案 | 进程程序替换 | exec 函数簇
- Eclipse 常用快捷键整理
- linux设置定时关机及取消
- 使用自动化学报latex模板时,dvi2pdf失败
- SQL Server 自定义快捷键。
- 安霸Alberto Broggi :计算机视觉技术驱动自动驾驶的发展 | 2019 AI+智能汽车创新峰会...
- 左耳听风——笔记三:面试技巧
- SpringSecurity系列——密码存储加密策略day7-1(源于官网5.7.2版本)