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

news/2024/9/21 1:42:23/

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

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.ppmy.cn/news/1528178.html

相关文章

oracle 如何查死锁

在Oracle中查看死锁通常涉及查询数据字典视图和动态性能视图。以下是一个基本的查询示例&#xff0c;用于检测和显示最近的死锁&#xff1a; SELECT dd.inst_id, dd.name, o.object_id, o.object_type, s.sid, s.serial#, s.username, p.spid, s.program,d.xidusn,d.xidslot,d…

WGAN算法

Wasserstein GAN (WGAN) 是一种改进的生成对抗网络&#xff08;GAN&#xff09;&#xff0c;由 Arjovsky 等人在 2017 年提出&#xff0c;用于解决原始 GAN 中的训练不稳定性和模式崩溃&#xff08;Mode Collapse&#xff09;问题。WGAN 的核心思想是使用Wasserstein 距离&…

【C#生态园】深入比较:六款C#数据流处理库对比解析

解密C#数据流处理利器&#xff1a;全面评析六大库 前言 随着信息技术的不断发展&#xff0c;数据流处理已经成为许多软件系统中必不可少的一部分。针对C#和.NET开发者来说&#xff0c;选择合适的数据流处理库可以极大地提高开发效率和系统性能。本文将介绍几个流行的C#数据流…

sqlgun靶场漏洞挖掘

进入首页首先看到一个搜索框&#xff0c;那么我们试一下xss 用script弹了个一 接下来我们尝试一下sql注入 这里我们使用联合查询查到了他的数据库名&#xff0c;那么这里也就存在SQL注入了 这里存在SQL注入那么我们就尝试一下是否可以注入木马来getshell 首先我们扫描目录&…

谷神后端list转map

list转map /*** list2map* list转map&#xff1a;支持全量映射、单字段映射。* * param $list:list:列表。* param $key:string:键。* param $field:string:值字段域。** return map**/ #function list2map($list, $key, $field)#if ($vs.util.isList($list) and $vs.util.is…

小琳AI课堂:MASS模型——革新自然语言处理的预训练技术

大家好&#xff0c;这里是小琳AI课堂。今天我们来聊聊一个在自然语言处理&#xff08;NLP&#xff09;领域非常热门的话题——MASS模型&#xff0c;全称是Masked Sequence to Sequence Pre-training for Language Generation。这是华为诺亚方舟实验室在2019年提出的一种创新模型…

用 Docker 部署 Seafile 社区版

快速开始 本文档使用以下约定&#xff1a; /opt/seafile-data是 Seafile 的目录。 如果您将 Seafile 放在不同的目录中&#xff0c;请相应地调整所有路径。Seafile 使用两个 Docker 卷 来保存其数据库和 Seafile Docker 容器中生成的数据。卷的主机路径分别是/opt/seafile-my…

USB组合设备——串口+鼠标+键盘

文章目录 USB组合设备——串口+鼠标+键盘描述符结构设备描述符配置描述符集合配置描述符接口关联描述符键盘接口描述符鼠标接口描述符类特殊命令CDC 的类特殊命令HID 的类特殊命令接口 2接口3USB组合设备——串口+鼠标+键盘 描述符结构 设备描述符 配置描述符 接口关联描述符…