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.

思路:

标签:动态规划

  1. 首先初始化长度为n+1的数组dp,每个位置都为0
  2. 如果n为0,则结果为0
  3. 对数组进行遍历,下标为i,每次都将当前数字先更新为最大的结果,即dp[i]=i,                                                                  比如i=4,最坏结果为4=1+1+1+1即为4个数字
  4. 动态转移方程为:dp[i] = MIN(dp[i], dp[i - j * j] + 1),i表示当前数字,j*j表示平方数
  5. 时间复杂度: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中国工商银行笔试编程题相关推荐

  1. 农行2021计算机专业面试题,【面经】2021 中国农业银行 笔试编程题

    [面经]2021 中国农业银行 笔试编程题 2020年09月01日 | 萬仟网科技 | 我要评论 微信搜索:编程笔记本.获取更多干货!微信搜索:编程笔记本.获取更多干货!点击上方蓝字关注我,我们一起学 ...

  2. 字节跳动2019春招第二次笔试编程题

    字节跳动2019春招第二次笔试编程题 1.变身程序员 题目描述 输入描述 输出描述 示例 示例1 示例2 示例3 分析 参考代码 2.特征提取 题目描述 输入描述 输出描述 示例 示例1 备注 分析 ...

  3. 【面经】2021 中国农业银行 笔试编程题

    微信搜索:编程笔记本.获取更多干货! 微信搜索:编程笔记本.获取更多干货! 点击上方蓝字关注我,我们一起学编程 欢迎小伙伴们分享.转载.私信.赞赏 1 火星文表示法 题目描述: 微信搜索:编程笔记本. ...

  4. 科大讯飞2019秋招研究算法笔试编程题

    第一题 样例输入 2 5 60 59 20 30 90 100 5 60 59 20 10 10 100 样例输出 1 2 Hint 对于第一组数据,将59改成60即可 AC代码: def minst ...

  5. 快手2019春招笔试编程题

    快手2019春招笔试编程题 第一题 输入描述 输出描述 分析 代码 第二题 输入描述 输出描述 分析 代码 第三题 输入描述 输出描述 分析 代码 个人主页:http://redtongue.cn o ...

  6. 2019年秋招猿辅导笔试编程题解析字符串

    猿辅导笔试 编程题的解析字符串 5 A11B (AA)2A ((A2B)2)2G (YUANFUDAO)2JIAYOU A2BC4D2 输入如上,按照规则解析字符串 研究了下用栈写出来了,其实不难,加 ...

  7. C++笔试编程题1:雀魂启动

    2019字节跳动笔试编程题 雀魂启动 小包最近迷上了一款叫做雀魂的麻将游戏,但是这个游戏规则太复杂,小包玩了几个月了还是输多赢少. 于是生气的小包根据游戏简化了一下规则发明了一种新的麻将,只留下一种花 ...

  8. java常见笔试编程题(一)

    java常见笔试编程题(一) 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串.但是要保证汉字不被截半个,例如"人abc",应该截为"人ab& ...

  9. 网易笔试编程题java_2017年网易校招笔试JAVA研发编程题

    为什么80%的码农都做不了架构师?>>> 尝试挑战了下网易2017校招的笔试编程题,共三题,AC第一题,第二题思考了很久勉强用一种low逼的方式完成,第三题没有完成,希望路过的ACM ...

  10. 经典笔试编程题--Java实现

    转载自  经典笔试编程题--Java实现 1.输入一个正数n,输出所有和为n的连续正数序列.  分析:设定两个指针,min指向和为n的连续正数序列的最小值,max指向和为n的连续正数序列最大值.sum ...

最新文章

  1. ?:在正则表达式中什么意思
  2. 图片增强来解决图片不足问题
  3. html表ge模板_16款用户体验优秀的HTML CSS价格表格模板 附演示及下载
  4. 关于微信 setData 回调函数中的坑
  5. 答读者问(6):有关IT培训和毕业之前的迷茫等问题
  6. 75. Sort Colors - LeetCode
  7. WPS最大的败笔是“免费用,广告弹窗”,难怪用户纷纷使用office
  8. html语言制作静态网页,html+css制作的漂亮静态网页
  9. 月入1W+的自媒体达人都会用到的运营工具
  10. 对于Ajax在MUI框架中的用运以及单 webview 模式中的下拉刷新功能探究
  11. 读《天才在左 疯子在右》有感
  12. 金彩教育:高转化详情页怎么优化
  13. 【看表情包学Linux】进程阻塞 | 轮询检测 | 基于非阻塞等待的轮询方案 | 进程程序替换 | exec 函数簇
  14. Eclipse 常用快捷键整理
  15. linux设置定时关机及取消
  16. 使用自动化学报latex模板时,dvi2pdf失败
  17. SQL Server 自定义快捷键。
  18. 安霸Alberto Broggi :计算机视觉技术驱动自动驾驶的发展 | 2019 AI+智能汽车创新峰会...
  19. 左耳听风——笔记三:面试技巧
  20. SpringSecurity系列——密码存储加密策略day7-1(源于官网5.7.2版本)

热门文章

  1. 【计算机组成原理】地址线和数据线
  2. 微软:从“开源是毒瘤”到“我爱 Linux”的 20 年
  3. NBA 2009-10赛季赛程表
  4. 优启通制作系统u盘_如何用优启通制作U盘启动盘
  5. 毕业论文 Word 排版技巧
  6. 电脑机械硬盘秒变移动硬盘!
  7. 拒绝访问,文件或目录损坏且无法读取解决办法
  8. 现代信息检索——布尔检索
  9. App小程序开发外包的费用大约是多少?
  10. 度量衡计算工具_度量衡计量单位换算转换器