不能入住的房客数
题目描述:
有一个宾馆,只有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届机试题目-数字芯片】涉及的知识点主要集中在数字集成电路和Verilog编程语言上,这是IT领域尤其是硬件设计工程师常见的技能需求。以下是对这些知识点的详细阐述: 1. **米利状态机与摩尔状态机的区别**...
### 2014华为机试题目解析 #### 一、字符串过滤题目解析(60分) **题目描述**: 本题目要求实现一个字符串过滤功能,即去除字符串中所有重复出现的字符,只保留首次出现的字符。例如,对于字符串 "abacacde",...
这份"华为笔试机试2011--14年汇总"包含了华为在四年内笔试机试的部分题目,对于想要加入华为的IT专业人士来说,是一个宝贵的复习资源。 在准备华为笔试机试时,以下几个核心知识点至关重要: 1. **编程语言基础**...
40道客观题(30道单选+10道多选),仅有题干,答案自行百度~
【2014重邮华为机试题目】是2013年9月14日和15日在重庆邮电大学进行的华为公司校园招聘活动的一部分。华为作为全球知名的电信设备与服务提供商,其校园招聘历来备受关注,尤其是对技术人才的需求。机试,即在线编程...
华为2014校园招聘笔试,围棋吃子判断 一个围棋盘的位置总共有三种状态,分别为空、白棋、黑棋,分别用0、1、2来表示。每一个位置都有上下左右四个邻居,当其邻居中有一个空格,则说明这个位置的棋子有气。
【华为机试真题2022最新】是华为公司面试过程中的一系列编程题目,主要针对初、中级程序员进行技能考核。这些题目涵盖了C和C++两种编程语言,旨在检验应聘者的逻辑思维、字符串处理、字符计数以及数组操作等基本编程...
华为机试题目。输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值m。从数列首位置开始计数,计数到m后,将数列该位置数值替换计数值m,并将数列该位置数值出列,然后从下一位置...
【免费题库】华为OD机试 - 虚拟理财游戏(Java & JS & Python & C & C++).html付费专栏内容,免费下载,多种语言解法
从给定的文件标题、描述、标签以及部分内容中,我们可以归纳出一系列与IT技术相关的知识点,特别是编程领域中常见的算法和数据结构问题。...掌握这些知识不仅是应对华为机试的关键,也是成为一名优秀软件工程师的基石。
【华为校园招聘机试答案详解】 在华为的校园招聘机试中,通常会考察应聘者的基础编程能力、逻辑思维和问题解决技巧。以下是对提供的三道题目及其解答的详细解析: 1. **初级题:从考试成绩中划出及格线** 这道...
【华为OD机试真题-字符串重传排列2023】是一道考察应聘者编程能力和算法理解的题目。此题目的目标是对输入的字符串进行处理,具体步骤如下: 1. **单词内部调整**:首先,对每个单词的字母进行字典序排序。这意味着...
本人在准备2014年华为机试的时候,进行整理的,代码全部运行成功。如有错误,请大家见谅。
从给定的文件内容可以看出,这是一份华为机试题目的总结。华为机试是华为公司针对应聘者进行的一种编程能力测试,涉及到的知识点广泛,涵盖了字符串处理、数据结构、算法等多个方面。以下是对文件内容中提及的知识点...
华为od机试题库,高命中率,有答案。要是题目中有不会的可以联系博主,亲自解答。
### 2014华为机试和面试资料整理 #### 题目1:求整型数组中的最小数和最大数之和 **题目描述**: 编写一个C语言程序,输入一个整型数组(数组长度不超过50),计算并输出数组中的最小数和最大数之和。如果数组中...
这个题目是华为在线评估(OD)机试中的一道编程题,属于教育和考试的范畴。题目要求编写一个程序,实现猜字谜的功能。用户输入两组字符串数组,一组代表谜面(mimian),一组代表谜底(midi)。程序需要检查谜面和...
求职华为经历―软件开发―性格测试-机试-面试-OFFER 本文总结了作者的求职华为经历,从注册简历到获得offer的整个过程。主要包括性格测试、机试、面试几个环节,并对每个环节进行了详细的描述和建议。 一、注册...