华为2018实习生软件岗机试题目(2018.04.10)
刚刚做完笔试题目,题目具体内容记得不是很清楚了,请见谅。一共三道题目,时间120分钟。
第一题
题目描述
输入一行字符串(字母或者数字,可能含重复值),按照其ASCII码顺序输出。
比如:
输入
eeefffgghhk
次数统计
e —— 3次
f —— 3次
g ——2次
h —— 2次
k —— 1次
输出
efghkefghef
提交代码
import java.util.*;
public class Main{
public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String input = scanner.nextLine();char[] charArray = input.toCharArray();//建立ASCII码数组,下标即对应的ASCII值int[] asciiArray = new int[127];//统计每个ASCII字符出现的次数for (int i = 0; i < charArray.length; i++) {asciiArray[charArray[i]]++;}StringBuilder sb = new StringBuilder();//标记位 如果数组所有次数减为0,则退出循环int zeroCount = 0;while (zeroCount != 127) {zeroCount = 0;for (int j = 0; j < asciiArray.length; j++) { //循环遍历已经实现了按照ASCII值排序if (asciiArray[j] != 0) {char ch = (char) j; //拿到当前位的字符sb.append(ch); //添加到输出asciiArray[j]--; //次数减一} else {zeroCount++;}}}System.out.println(sb.toString());}
}
第二题
题目描述
输入多行数字,第一行数字代表加下来要输入的数字个数。每个数字的值代表其可以向后跳跃的最长长度,求从第一位跳到最后一位的最短步数。
比如:
输入
7
2
3
2
1
2
1
5
得到
2 3 2 1 2 1 5
输出
3
解析:最短路径为 2-2-2-5或者 2-3-2-5,都是跳3步到最后一位
解题思路
一看就是用回溯算法
import java.util.*;
public class Main{static int curStep = 0;static int minStep = 0;public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();int[] nums = new int[num];for (int i = 0; i < num; i++)nums[i] = scanner.nextInt();jumpToLast(nums, 0);System.out.println(minStep - 1);}private static void jumpToLast(int[] array, int curPosition) {//超过if (curPosition > array.length - 1) {return;}//刚好else if (curPosition == array.length - 1) {curStep++; //向前if (minStep == 0 || curStep < minStep)minStep = curStep; //更新最小步数curStep--; //回退return;}//还没到尽头else{curStep++; //向前for (int i = 1; i <= array[curPosition]; i++) {jumpToLast(array,curPosition + i);}curStep--; //回退}}
}
第三题
题目描述
大整数(正数,位数不限)相乘,求乘积。输入两行字符串,输出乘积的字符串
比如:
输入
1234
4321
输出
5332114
解题思路
代码提交
import java.util.*;
public class Main{public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String num1 = scanner.nextLine();String num2 = scanner.nextLine();int len1 = num1.length();int len2 = num2.length();//新建一个数组用于存放结果,位数最多不超过totalLenint totalLen = len1 + len2;int[] resultArray = new int[totalLen];//存放进位int carry = 0;//在数组中的存放位置移动指针(初始为最高位)int index = totalLen - 1;for (int i = len1 - 1; i >= 0; i--){//遍历num1,从右侧(低位)开始int tempNum1 = num1.charAt(i) - '0';//遍历num2,每一位都与num1的当前位相乘for (int j = len2 - 1; j >= 0; j--) {int tempNum2 = num2.charAt(j) - '0';//每一次算和的时候都要加上原来在该位置处的值以及进位int sum = resultArray[i + j + 1] + tempNum1 * tempNum2 + carry;//进位carry = sum / 10;//新值resultArray[i + j + 1] = sum % 10;}//进位不为0,则需在数组中体现if (carry != 0)resultArray[i] = carry;//进位清零carry = 0;}StringBuilder sb = new StringBuilder();if (resultArray[0] != 0)sb.append(resultArray[0]);for (int k = 1; k < totalLen; k++) {sb.append(resultArray[k]);}System.out.println(sb.toString());}
}
花了一个半小时写完,感觉还是有点紧张,当时做这道题的时候,【进位】和【新值】那边的/号和%号就写反了。不过很开心都做出来了~~~
华为2018实习生软件岗机试题目(2018.04.10)相关推荐
- 华为2014校园招聘的机试题目
华为2014校园招聘的机试题目和2013年的完全一样. 一.题目描述(60分): 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的 ...
- 华师大c语言作业答案,2018华东师范大学计算机系机试题目代码
Problem A 给一个小学生都会算的1位数与1位数运算的代数式,请你求出这个表达式的值. 表达式仅含+-*/四种运算,题目保证0不为除数. Sample Input 1: 1+1 Sample O ...
- 循环相乘取整法C语言,华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...
题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出乘积,如:151851741 样例输入: 1234567 123 样例输出: 1518 ...
- 华为机试题目:工单调用策略
华为机试题目来源:华为优招机试(2021年7月7) - 代码先锋网 一.工单调用策略 当小区通信设备上报警时,系统会自动生成待处理的工单,华为工单调度系统需要根据不同的策略,调度外线工程师(FME)上 ...
- 虹软2023自动驾驶算法岗机试
文章目录 虹软2023自动驾驶算法岗机试 不定项选择 算法题 白色斑点数量 跳楼梯 题干 我的思路 最小素因子集数 问答题 虹软2023自动驾驶算法岗机试 牛客系统, 一共有三个题型, 总时间两小时 ...
- 华为2014校园招聘合肥机试
华为2014校园招聘合肥机试,简历投晚了,没去参加机试,题目是听参加的同学描述的,大致意思如下 第一题:整数分解,将整数n分解成不同因子的和,后一因子要比前一因子大,且最大因子要小于n,其中n< ...
- 北理计算机考研机试,北理工计算机2000-2010考研机试题目c语言实现.doc
北理工计算机2000-2010考研机试题目c语言实现 北理工计算机2000-2010考研机试题目c语言实现1.进制转换#include #include //#include #include #in ...
- 2019-6浙江工业大学计算机学院转专业二志愿机试题目
因为转专业可以报两个志愿,所以这次带来了二志愿的题目,难度并没有变化太多,这次很幸运通过了机试,但又倒在了面试上,遗憾之情难以言表,下次再来8 相关链接 2019-5转专业一志愿机试题目 2019-1 ...
- 计算机保研面试基础知识,华科计算机保研复试机试题目
华中科技大学复试机试题目 2008年 一. 1.狼过河问题(运用到回溯) 2.统计文件中单词数目 3.N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(递归) 4.链表操作 二. 第一个是 ...
最新文章
- 百万数据修改索引,百万数据修改主键
- 为什么说「中台」程序员未来会最值钱?
- 利用JS获取IE客户端IP及MAC的实现
- java arraylist 序列化_无法序列化/反序列化ArrayList
- idea 快捷键在方法上抛出异常
- 光盘刻录制作Ubuntu等操作系统的启动盘
- Chrome插件(扩展)
- 「云+未来」上海峰会,报名开启
- 不花钱、不买服务器可以搭建个人博客吗?快进来,给你安排!
- scala Basic 第三课
- k310.4安装客户端提示self-registration error
- 一、首页、详情页、文章编辑页制作《iVX低代码/无代码个人博客制作》
- 那些年,我深爱着的PPT
- 不同形式弧微分的求解
- Oracle Becomes 2nd Largest Software Company
- 设备综合效率OEE:基于数采的OEE优化分析
- widows下安装pycurl并利用pycurl请求https地址
- 班章管家有20万想去理财,买什么理财产品靠谱一点?
- 华为笔记本linux usb启动,华为MateBook D(2018) BIOS设置u盘启动教程
- 移动web微金所实战项目——导航栏
热门文章
- 关于在安装虚拟机的时候的一个小问题,pe系统没有分区工具
- 本书简介(Kali Linux Revealed 1st)
- ENFJ型人格的性格缺陷和心理问题分析
- 在游戏中学编程不好吗?8大游戏总有一个适合你吧?
- 《互动教程 for Illustrator CC》中文版正式发布
- 系统安装文件是php,电脑重装系统文件会丢失吗
- 从零开始构建嵌入式实时操作系统3——任务状态切换
- Html+JavaScript+百度地图api:GPS功能单点运动
- 如何利用360卫士、腾讯管家屏蔽、拦截电脑上常见恶意弹窗广告的骚扰
- html5 gps 坐标转高德地图坐标,GPS坐标转百度地图坐标的方法