2015华为招聘机试样题(java实现)

2023-12-14 02:32

本文主要是介绍2015华为招聘机试样题(java实现),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.

描述:

模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用“A”、”B”、”C”、”D”表示,选举时开始计票, 若输入的不是“A”、”B”、”C”、”D”则视为无效票。选举结束后获取各个候选人的得票数以及无效票的个数,输出结果以添加候选人的顺序进行顺序输出,最后一行为无效的数量。同时getVoteResult命令为结束命令。

运行时间限制: 无限制
内存限制: 无限制
输入:

输入为多行形式输入,每一行为一条命令。输入的命令只会是有效命令不会有非法命令,但可能存在非法的投票,上面已经描述了。

添加候选人的命令如下:addCandidate为命令 xx1为候选人

addCandidate xx1

投票的命令如下:vote为命令 xx1为候选人的字符串

vote xx1

统计投票的命令如下:getVoteResult为命令

getVoteResult

输出:

输出结果以添加候选人的顺序进行顺序输出,最后一行为无效的数量。

样例输入:
addCandidate xx1
addCandidate xx2
addCandidate xx3
addCandidate xx4
addCandidate xx5
addCandidate xx6
vote xx1
vote xx3
vote xx4
vote xx1
vote xx2
vote xx7
vote xx4
vote xx5
vote xx3
vote xx2
vote xx1
vote xx7
getVoteResult
样例输出:
xx1 3
xx2 2
xx3 2
xx4 2
xx5 1
xx6 0
2

参考答案:

import java.util.*;
import java.util.Map.Entry;public class Main {static Map<String,Integer> candidateList = new TreeMap<String, Integer>();//因为TreeMap是有序的,在投票数相同的情况下,先添加的候选人依然排在前面static int invalid = 0;public static void main(String[] args) {Scanner scan = new Scanner(System.in);String str = scan.nextLine();String[] s = str.split(" ");while (s[0].equals("addCandidate")) {			candidateList.put(s[1], 0);str = scan.nextLine();s = str.split(" ");}while (s[0].equals("vote")) {if (candidateList.containsKey(s[1])) {candidateList.put(s[1], candidateList.get(s[1]) + 1);}else{invalid = invalid + 1;}str = scan.nextLine();s = str.split(" ");}if (s[0].equals("getVoteResult")) {ArrayList<Map.Entry<String,Integer>> entries = getVoteResult();for (int i = 0; i < entries.size(); i++) {String key = entries.get(i).getKey();int value = entries.get(i).getValue();System.out.println(key + " " + value);}System.out.println(invalid); }scan.close();}private static ArrayList<Entry<String, Integer>> getVoteResult() {List<Map.Entry<String, Integer>> entries = new ArrayList<Map.Entry<String, Integer>>(candidateList.entrySet());Collections.sort(entries, new Comparator<Map.Entry<String, Integer>>() {  public int compare(Map.Entry<String, Integer> obj1 , Map.Entry<String, Integer> obj2) {  return obj2.getValue() - obj1.getValue();  }  });  return (ArrayList<Entry<String, Integer>>) entries;  }}

2. 

描述:

输入一串数字,找到其中包含的最大递增数。递增数是指相邻的位数从小到大排列的数字。如2895345323,递增数有289,345,23,那么最大递增数为345.

运行时间限制: 无限制
内存限制: 无限制
输入:

输入一串数字,默认这串数字是正确的,即里面不含有字符/空格等情况

输出:

输出最大递增数。

样例输入:
123526897215
样例输出:
2689

参考答案:

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);String str = scan.next();char[] strArray = str.toCharArray();int[] flag = new int [strArray.length];StringBuffer num = new StringBuffer("");int maxnum = 0;for(int i = 0; i< strArray.length-1 ; i++){if (strArray[i] < strArray[i+1]){flag[i] = 1;}}for (int i = 0; i< strArray.length; i++){if(flag[i] == 0){num.append(strArray[i]);if (Integer.parseInt(num.toString()) > maxnum){maxnum = Integer.parseInt(num.toString());}num.setLength(0);}else{num.append(strArray[i]);}}System.out.println(maxnum);scan.close();}
}


3.

描述:

    Word Maze 是一个网络小游戏,你需要找到以字母标注的食物,但要求以给定单词字母的顺序吃掉。如上图,假设给定单词if,你必须先吃掉i然后才能吃掉f。


    但现在你的任务可没有这么简单,你现在处于一个迷宫Maze(n×m的矩阵)当中,里面到处都是以字母标注的食物,但你只能吃掉能连成给定单词W的食物。


如下图,指定W为“SOLO”,则在地图中红色标注了单词“SOLO”。 


 

注意区分英文字母大小写,你只能上下左右行走。

运行时间限制: 无限制
内存限制: 无限制
输入:

输入第一行包含两个整数n、m(0<n, m<21)分别表示n行m列的矩阵,第二行是长度不超过100的单词W,从第3行到底n+3行是只包含大小写英文字母的长度为m的字符串。

输出:

如果能在地图中连成给定的单词,则输出“YES”,否则输出“NO”。注意:每个字母只能用一次。

样例输入:
5 5
SOLO
CPUCY
EKLQH
CRSOL
EKLQO
PGRBC
样例输出:
YES
答案提示:

 


参考答案:

import java.util.*;public class Main{private static int n, m;private static boolean[][] flagArr;private static char[][] array;private static boolean isFound;public static void main(String args[]) {Scanner cin = new Scanner(System.in);String word;n = cin.nextInt();m = cin.nextInt();array = new char[n][m];word = cin.next();isFound = false;for (int i = 0; i < n; i++) {array[i] = cin.next().toCharArray();}flagArr = new boolean[n][m];for (int i = 0; i < n; i++) {Arrays.fill(flagArr[i], false);}findWord(word);if (isFound) {System.out.println("YES");} else {System.out.println("NO");}cin.close();}private static void findWord(String word) {for (int i = 0; i < n; i++)for (int j = 0; j < m; j++) {if (array[i][j] == word.charAt(0)) {flagArr[i][j] = true;findNext(word, 1, i, j);if (isFound)return;elseflagArr[i][j] = false;}}}private static void findNext(String word, int index, int x, int y) {if (index == word.length()) {isFound = true;return;} else if (index < word.length()) {int nextIndex = index + 1;// upif ((x - 1) >= 0 && (!flagArr[x - 1][y])&& array[x - 1][y] == word.charAt(index)) {flagArr[x - 1][y] = true;findNext(word, nextIndex, x - 1, y);}// rightif ((y + 1) < m && (!flagArr[x][y + 1])&& array[x][y + 1] == word.charAt(index)) {flagArr[x][y + 1] = true;findNext(word, nextIndex, x, y + 1);}// downif ((x + 1) < n && (!flagArr[x + 1][y])&& array[x + 1][y] == word.charAt(index)) {flagArr[x + 1][y] = true;findNext(word, nextIndex, x + 1, y);}// leftif ((y - 1) > 0 && (!flagArr[x][y - 1])&& array[x][y - 1] == word.charAt(index)) {flagArr[x][y - 1] = true;findNext(word, nextIndex, x, y - 1);}flagArr[x][y] = false;}}}



这篇关于2015华为招聘机试样题(java实现)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/490818

相关文章

基于SpringBoot+Mybatis实现Mysql分表

《基于SpringBoot+Mybatis实现Mysql分表》这篇文章主要为大家详细介绍了基于SpringBoot+Mybatis实现Mysql分表的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录基本思路定义注解创建ThreadLocal创建拦截器业务处理基本思路1.根据创建时间字段按年进

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J