`

华为南研所2014春季机试题目-2不能入住的房客数

阅读更多

不能入住的房客数

题目描述:

       有一个宾馆,只有m个房间(room),有房客(A~Z)到来时,若有空房间则可以立即入住;没有空房间则不能入住,旅客可以选择立即离开或者等待空房间;

假设给定了各个旅客到达和离开的顺序(如HFBJJBKFHMMSSLPWWPLK),问有多少个旅客没能入住。

 

要求:

输入:房间数  旅客到达离开的序列

输出:最终没能入住的旅客数

 

样例:

输入:3  HFBJJBKFHMMSSLPWWPLK

输出:2

 

思路:

用List集合模拟房间,按旅客到达离开次序进行遍历,来一个旅客首先判断是否已在房间里,若在代表遍历到的是离开的标志;若不在,则看是否有空房间,有则添加进去;

 

package com.liuhao;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class UserNORooms {

	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);

		int room = scan.nextInt();// 房间数
		String users = scan.next();// 旅客到来离开顺序

		// 采用List方便添加和删除
		List inList = new ArrayList();// 存放已经住进的旅客

		int result = 0;// 存放最终的不能入住的旅客数
		
		// 按旅客的到来顺序依次遍历,模拟场景
		for (int i = 0; i < users.length(); i++) {
			// 先判断是否在房间里,若在则将其删除
			if (isInRoom(inList, users.charAt(i))) {
				inList.remove(getRoom(inList, users.charAt(i)));
			}
			// 不在,看房间是否注满,没满则添加
			else if (inList.size() < room) {
				inList.add(users.charAt(i));
			}
			// 不能入住,结果加一
			else {
				result++;
				continue;
			}
		}

		System.out.println(result / 2);// 没能入住的在遍历过程中算了两次
	}

	// 判断旅客是否在住
	private static boolean isInRoom(List inList, char user) {
		boolean temp = false;

		for (int i = 0; i < inList.size(); i++) {
			if (user == (char) inList.get(i)) {
				temp = true;
				break;
			}
		}

		return temp;
	}

	// 返回旅客在住的房间号
	private static int getRoom(List inList, char user) {
		int temp = 0;
		for (int i = 0; i < inList.size(); i++) {
			if (user == (char) inList.get(i)) {
				temp = i;
				break;
			}
		}
		return temp;
	}

}

 

分享到:
评论

相关推荐

    华为2020届机试题目-数字芯片.pdf

    【华为2020届机试题目-数字芯片】涉及的知识点主要集中在数字集成电路和Verilog编程语言上,这是IT领域尤其是硬件设计工程师常见的技能需求。以下是对这些知识点的详细阐述: 1. **米利状态机与摩尔状态机的区别**...

    2014华为机试题目

    ### 2014华为机试题目解析 #### 一、字符串过滤题目解析(60分) **题目描述**: 本题目要求实现一个字符串过滤功能,即去除字符串中所有重复出现的字符,只保留首次出现的字符。例如,对于字符串 "abacacde",...

    华为笔试机试2011--14年汇总

    这份"华为笔试机试2011--14年汇总"包含了华为在四年内笔试机试的部分题目,对于想要加入华为的IT专业人士来说,是一个宝贵的复习资源。 在准备华为笔试机试时,以下几个核心知识点至关重要: 1. **编程语言基础**...

    华为_结构与材料_机试题目.txt

    40道客观题(30道单选+10道多选),仅有题干,答案自行百度~

    2014重邮华为机试题目

    【2014重邮华为机试题目】是2013年9月14日和15日在重庆邮电大学进行的华为公司校园招聘活动的一部分。华为作为全球知名的电信设备与服务提供商,其校园招聘历来备受关注,尤其是对技术人才的需求。机试,即在线编程...

    华为2014机试题目代码

    华为2014校园招聘笔试,围棋吃子判断 一个围棋盘的位置总共有三种状态,分别为空、白棋、黑棋,分别用0、1、2来表示。每一个位置都有上下左右四个邻居,当其邻居中有一个空格,则说明这个位置的棋子有气。

    华为机试真题 2022最新

    【华为机试真题2022最新】是华为公司面试过程中的一系列编程题目,主要针对初、中级程序员进行技能考核。这些题目涵盖了C和C++两种编程语言,旨在检验应聘者的逻辑思维、字符串处理、字符计数以及数组操作等基本编程...

    华为机试题目 005

    华为机试题目。输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值m。从数列首位置开始计数,计数到m后,将数列该位置数值替换计数值m,并将数列该位置数值出列,然后从下一位置...

    【免费题库】华为OD机试 - 虚拟理财游戏(Java & JS & Python & C & C++).html

    【免费题库】华为OD机试 - 虚拟理财游戏(Java & JS & Python & C & C++).html付费专栏内容,免费下载,多种语言解法

    华为机试题目大全

    从给定的文件标题、描述、标签以及部分内容中,我们可以归纳出一系列与IT技术相关的知识点,特别是编程领域中常见的算法和数据结构问题。...掌握这些知识不仅是应对华为机试的关键,也是成为一名优秀软件工程师的基石。

    2014华为校园招聘机试答案

    【华为校园招聘机试答案详解】 在华为的校园招聘机试中,通常会考察应聘者的基础编程能力、逻辑思维和问题解决技巧。以下是对提供的三道题目及其解答的详细解析: 1. **初级题:从考试成绩中划出及格线** 这道...

    华为OD机试真题-字符串重传排列2023

    【华为OD机试真题-字符串重传排列2023】是一道考察应聘者编程能力和算法理解的题目。此题目的目标是对输入的字符串进行处理,具体步骤如下: 1. **单词内部调整**:首先,对每个单词的字母进行字典序排序。这意味着...

    2014华为机试个人整理(完成代码C++)

    本人在准备2014年华为机试的时候,进行整理的,代码全部运行成功。如有错误,请大家见谅。

    华为机试题目总结

    从给定的文件内容可以看出,这是一份华为机试题目的总结。华为机试是华为公司针对应聘者进行的一种编程能力测试,涉及到的知识点广泛,涵盖了字符串处理、数据结构、算法等多个方面。以下是对文件内容中提及的知识点...

    华为od机试题库 - 2023Q1

    华为od机试题库,高命中率,有答案。要是题目中有不会的可以联系博主,亲自解答。

    2014华为机试和面试资料整理

    ### 2014华为机试和面试资料整理 #### 题目1:求整型数组中的最小数和最大数之和 **题目描述**: 编写一个C语言程序,输入一个整型数组(数组长度不超过50),计算并输出数组中的最小数和最大数之和。如果数组中...

    华为od机试真题-猜字谜

    这个题目是华为在线评估(OD)机试中的一道编程题,属于教育和考试的范畴。题目要求编写一个程序,实现猜字谜的功能。用户输入两组字符串数组,一组代表谜面(mimian),一组代表谜底(midi)。程序需要检查谜面和...

    求职华为经历―软件开发―性格测试-机试-面试-OFFER(精).docx

    求职华为经历―软件开发―性格测试-机试-面试-OFFER 本文总结了作者的求职华为经历,从注册简历到获得offer的整个过程。主要包括性格测试、机试、面试几个环节,并对每个环节进行了详细的描述和建议。 一、注册...

Global site tag (gtag.js) - Google Analytics