算法练习题27——疫情下的电影院(模拟)

其实思路还好 就是输入有点难搞

Java

import java.util.ArrayList;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String input = scanner.nextLine();// 去掉输入字符串的方括号if (input.startsWith("[")) input = input.substring(1);if (input.endsWith("]")) input = input.substring(0, input.length() - 1);// 分割输入字符串并将其转换为整数列表String[] items = input.split(",");ArrayList<Integer> numbers = new ArrayList<>();for (String item : items) {numbers.add(Integer.parseInt(item.trim()));  // 去除多余空格并转换为整数}int n = numbers.size();int count = 0;// 遍历座位列表,计算可以安排的最大人数for (int i = 0; i < n; i++) {if (numbers.get(i) == 0) {boolean flag = true;// 检查前两个座位if (i > 0 && numbers.get(i - 1) == 1) {flag = false;}if (i > 1 && numbers.get(i - 2) == 1) {flag = false;}// 检查后两个座位if (i < n - 1 && numbers.get(i + 1) == 1) {flag = false;}if (i < n - 2 && numbers.get(i + 2) == 1) {flag = false;}// 如果该座位可以安排,计数并将其标记为已占用if (flag) {count++;numbers.set(i, 1);  // 将当前座位设置为已占用}}}// 输出可以安排的最大人数System.out.println(count);}
}
1.input.startsWith("[")
  • startsWith 是 Java String 类的一个方法,用于检查字符串是否以指定的字符或子字符串开始。
  • 如果 input 字符串以字符 [ 开头,input.startsWith("[") 返回 true
  • 当条件为 true 时,input = input.substring(1) 会被执行。
2. input.substring(1)
  • substring 是 Java String 类的另一个方法,返回一个新的字符串,这个字符串是从指定的起始位置(以 0 为基数)开始,直到原字符串的末尾。
  • input.substring(1) 表示从字符串的第二个字符(索引 1)开始,截取到字符串末尾。这样就去掉了第一个字符 [
  • 例如,"[1, 0, 0, 1]".substring(1) 将会返回 "1, 0, 0, 1]"
3. input.endsWith("]")
  • endsWith 方法用于检查字符串是否以指定的字符或子字符串结束。
  • 如果 input 字符串以字符 ] 结束,input.endsWith("]") 返回 true
  • 当条件为 true 时,input = input.substring(0, input.length() - 1) 会被执行。
4. input.substring(0, input.length() - 1)
  • input.length() 返回字符串的长度。
  • substring(0, input.length() - 1) 表示从字符串的第一个字符(索引 0)开始,截取到倒数第二个字符(索引为 length - 1 的字符不包括在内)。
  • 这样做的目的是去掉字符串最后一个字符 ]
  • 例如,"1, 0, 0, 1]".substring(0, input.length() - 1) 将返回 "1, 0, 0, 1"
5.split() 方法
  • split() 是 Java 中 String 类的一个方法,用于根据指定的正则表达式将字符串分割为一个字符串数组。
  • 参数 "," 代表以逗号作为分隔符。
  • 这个方法会扫描 input 字符串中的所有逗号,并在每个逗号处分割,返回一个字符串数组 items
6.trim() 方法
  • trim() 是 String 类的一个方法,用于去除字符串两端的空白字符(包括空格、制表符等)。
  • 它不会改变字符串中间的空格,只去除两端的空白字符。
为什么需要 trim()
  • 当你从输入中读取数据时,有时候每个元素之间可能会有多余的空格,比如 input = "1, 2, 0 , 1"。通过 split(",") 分割后,会得到像 " 2" 这样的字符串,这个字符串中有空格。
  • 使用 trim() 可以去掉这些多余的空格,确保你只处理纯数字部分。
示例
  • " 2 ".trim() 会返回 "2"
  • "0 ".trim() 会返回 "0"

C++ ihate

#include <bits/stdc++.h>
using namespace std;int main() {string input;getline(cin, input);// 去除前后的方括号if (!input.empty() && input[0] == '[') input.erase(input.begin());if (!input.empty() && input.back() == ']') input.pop_back();// 解析输入为整数向量vector<int> numbers;stringstream ss(input);string item;// 用一个简单的字符串流来分割和转换while (getline(ss, item, ',')) {numbers.push_back(stoi(item));  // 直接使用 stoi 转换为整数}int n = numbers.size();int count = 0;for (int i = 0; i < n; i++) {if (numbers[i] == 0) {bool flag = true;// 检查当前位置前面两个 if (i > 0 && numbers[i - 1] == 1) {flag = false;}if (i > 1 && numbers[i - 2] == 1) {flag = false;}// 检查当前位置后面两个 if (i < n - 1 && numbers[i + 1] == 1) {flag = false;}if (i < n - 2 && numbers[i + 2] == 1) {flag = false;}if (flag) {count++;numbers[i] = 1;}}}cout << count << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/424338.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html+css+js网页设计 旅游 大理旅游7个页面

htmlcssjs网页设计 旅游 大理旅游7个页面 网页作品代码简单&#xff0c;可使用任意HTML辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&#…

爬虫逆向学习(六):补环境过某数四代

声明&#xff1a;本篇文章内容是整理并分享在学习网上各位大佬的优秀知识后的实战与踩坑记录 引用博客&#xff1a; https://blog.csdn.net/shayuchaor/article/details/103629294 https://blog.csdn.net/qq_36291294/article/details/128600583 https://blog.csdn.net/weixin_…

浅谈Spring Cloud:认识微服务

SpringCloud就是分布式微服务架构的一站式解决方案&#xff0c;是微服务架构落地的多种技术的集合。 目录 微服务远程调用 Eureka注册中心 搭建Eureka Server 注册组件 服务拉取 当各种各样的服务越来越多&#xff0c;拆分的也越来越细&#xff0c;此时就会出现一个服务集…

【Vue】2

1 Vue 生命周期 Vue生命周期&#xff1a;一个 Vue 实例从 创建 到 销毁 的整个过程 创建(create)阶段&#xff1a;组件实例化时&#xff0c;初始化数据、事件、计算属性等挂载(mount)阶段&#xff1a;将模板渲染并挂载到 DOM 上更新(update)阶段&#xff1a;当数据发生变化时…

Python基础语法(3)上

函数 函数是什么 编程中的函数和数学中的函数有一定的相似之处. 数学上的函数&#xff0c;比如 y sin x&#xff0c;x 取不同的值&#xff0c;y 就会得到不同的结果 编程中的函数是一段可以被重复使用的代码片段 代码示例&#xff1a;求数列的和&#xff0c;不使用函数 …

【计算机网络 - 基础问题】每日 3 题(六)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

C++:STL详解(一)string类的基本介绍与使用方式

✨ Blog’s 主页: 白乐天_ξ( ✿&#xff1e;◡❛) &#x1f308; 个人Motto&#xff1a;实践是检验真理的唯一标准&#xff01;&#xff01;&#xff01;敲代码需要勤快点&#xff01;&#xff01;&#xff01;&#xff01; &#x1f4ab; 欢迎来到我的学习笔记&#xff0…

docker-01 创建一个自己的镜像并运行容器

docker-01 创建一个自己的镜像并运行容器 前言 我们都知道使用Docker的镜像可以快速创建和部署应用&#xff0c;大大的节约了部署的时间。并且Docker 的镜像提供了除内核外完整的运行时环境&#xff0c;确保代码的环境一致性&#xff0c;从而不会在出现这段代码在我机器上没问…

用于遥感深度学习的7种高光谱遥感图像和标签

数据介绍 此数据集来自于GIC(GRUPO INTELIGENCIA COMPUTACIONAL )官网 直达链接&#xff0c;采用MATLAB存储为矩阵形式&#xff0c;数据集后缀为.mat形式。每一个数据分为原始图像数据和标签数据&#xff0c;标签对应码请参考官网。注&#xff1a;此数据为公开数据&#xff0c…

国产视频转换HDMI1.4转单/双MIPI DSI/CSI LT6911C芯片方案,带音频输出,QFN64封装 Lontium

LT6911C:HDMI 1.4 TO MIPI DSI/CSI 芯片简介&#xff1a; LT6911C是一款高性能的HDMI1.4转换器MIPI DSI/CSI芯片用于VR/智能手机/显示应用。对于MIPI DSI/CSI输出&#xff0c;LT6911C功能可配置单端口或双端口MIPIDSI/CSI 1高速时钟通道和1~4个高速数据通道最大1.5Gb/s/lane&am…

网络工程师学习笔记——网络互连与互联网

互联网的定义 由多个网络相互连接组成更大的网络称为互联网 常见的网络设备&#xff08;是网络拓扑结构和网络的基础&#xff09; 物理层 中继器&#xff08;是将传输的信号进行放大&#xff0c;延长传输的距离&#xff09;&#xff0c;集线器也是这样&#xff0c;但是有更多…

如何获取MySQL数据表的列信息

在数据库管理中&#xff0c;了解表的结构是至关重要的。在MySQL中&#xff0c;我们可以通过几种方式来获取数据表的列信息。这不仅可以帮助我们更好地理解表的结构&#xff0c;还可以在编写查询时提供便利。以下是三种常用的方法来获取MySQL数据表的列信息。 使用 SHOW COLUMN…

C++速通LeetCode简单第10题-翻转二叉树

递归法&#xff1a; class Solution { public:TreeNode* invertTree(TreeNode* root) {if (root nullptr) {return nullptr;}TreeNode* left invertTree(root->left);TreeNode* right invertTree(root->right);root->left right;root->right left;return roo…

AtCoder ABC369 A-D题解

比赛链接:ABC369 省流&#xff1a;A<B<D<C&#xff08;题解是按照该顺序写的&#xff09; Problem A: #include <bist/stdc.h> using namespace std; int main(){int A,B;cin>>A>>B;if(AB)cout<<1<<endl;else if(abs(A-B)%20)cout&l…

一个软件分发和下载的网站源码,带多套模板

PHP游戏应用市场APP软件下载平台网站源码手机版 可自行打包APP&#xff0c;带下载统计&#xff0c;带多套模板&#xff0c;带图文教程 代码下载&#xff1a;百度网盘

饿了么基于Flink+Paimon+StarRocks的实时湖仓探索

摘要&#xff1a;本文整理自饿了么大数据架构师、Apache Flink Contributor 王沛斌老师在8月3日 Streaming Lakehouse Meetup Online&#xff08;Paimon x StarRocks&#xff0c;共话实时湖仓架构&#xff09;上的分享。主要分为以下三个内容&#xff1a; 饿了么实时数仓演进之…

C语言-整数和浮点数在内存中的存储-详解-上

C语言-整数和浮点数在内存中的存储-详解-上 1.前言2.整数2.1无符号整数2.2原码、反码、补码符号位最大值转换过程补码的意义简化算术运算易于转换方便溢出处理 1.前言 在C语言的使用中&#xff0c;需要时刻关注数据的类型&#xff0c;不同类型交替使用可能会发生错误&#xff…

算子级血缘在金融数据环境的实践应用

在企业的数据管理领域&#xff0c;算子级血缘极大优化了脚本内部字段口径的理解与追踪。面对几十、几百乃至几千行代码的复杂脚本&#xff0c;并且有着各种函数调用、数据转换等复杂的加工逻辑&#xff0c;如果通过传统的 ETL 工作模式&#xff0c;开发人员就不得不采用“盲人摸…

【H2O2|全栈】关于CSS(2)CSS基础(二)

目录 CSS基础知识 前言 准备工作 选择器的组合 盒模型 示例网页代码 后代选择器 亲代选择器 相邻兄弟选择器 后续兄弟选择器 多个元素选择器 通配符选择器 优先级 其他应用 伪类 锚链接的属性 列表的属性 list-style-type list-style-position list-style…

a√斗地主之顺子

题目描述 在斗地主扑克牌游戏中&#xff0c;扑克牌由小到大的顺序为:3,4,5.6,7.8,9,10,J,Q,K,A,2&#xff0c;玩家可以出的扑克牌阵型有:单张、对子、顺子、飞机、炸弹等。 其中顺子的出牌规则为:由至少5张由小到大连续递增的扑克牌组成&#xff0c;且不能包含2。 例如:(3.4.…