蓝桥杯-顺子日期

问题描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明特别喜欢顺子。顺子指的就是连续的三个数字:123、456 等。顺子日期指的就是在日期的 yyyymmdd 表示法中,存在任意连续的三位数是一个顺子的日期。例如 20220123 就是一个顺子日期,因为它出现了一个顺子:123; 而 20221023 则不是一个顺子日期,它一个顺子也没有。小明想知道在整个 2022 年份中,一共有多少个顺子日期?
运行限制
最大运行时间:1s
最大运行内存: 512M

本来感觉这个题很简单,应该可以直接手算,结果发现一直错,这种题保险起见还是代码算比较好:

1.yearmonth类求每个月的天数

在Java中,可以使用java.time包中的YearMonth类和TemporalAdjusters类来获取某一年的某一个月有多少天。以下是具体的代码示例:

import java.time.YearMonth;
import java.time.temporal.TemporalAdjusters;public class Main {public static void main(String[] args) {int year = 2024; // 假设我们要获取2024年的某一个月的天数int month = 2;   // 假设我们要获取2月的天数// 创建YearMonth对象YearMonth yearMonth = YearMonth.of(year, month);// 使用atEndOfMonth()方法获取该月的最后一天int daysInMonth = yearMonth.atEndOfMonth().getDayOfMonth();System.out.println(year + "年" + month + "月有 " + daysInMonth + " 天");}
}

这段代码首先导入了必要的类,然后创建了一个YearMonth对象,表示指定的年份和月份。接着,使用atEndOfMonth()方法获取该月的最后一天,并通过getDayOfMonth()方法获取该月的天数。这样就可以得到某年某月有多少天了。

2.将三个数字转换为日期格式(补0+字符串格式化)

在Java中,如果你有三个数字分别代表年、月、日,你可以将它们转换为yyyymmdd格式的字符串。以下是一个简单的方法来实现这一转换:

public class DateConverter {public static void main(String[] args) {int year = 2024; // 年份int month = 11;  // 月份int day = 17;   // 日期String formattedDate = String.format("%04d%02d%02d", year, month, day);System.out.println(formattedDate); // 输出:20241117}
}

在这个例子中,String.format方法用于格式化字符串。%04d表示至少4位的整数,如果不足4位则在前面补零;%02d表示至少2位的整数,如果不足2位则在前面补零。这样,无论输入的年、月、日是几位数,输出都将是标准的yyyymmdd格式。

3.判断一个字符串序列中是否包含某个字符串

在Java中,要检查一个字符串日期是否包含特定的数字序列,可以使用以下方法:

  1. 使用String类的contains方法
    这是最直接的方法,可以直接检查字符串中是否包含特定的子序列。例如,对于字符串数组shuzi中的每个元素,你可以使用contains方法来检查它们是否存在于目标字符串日期中。
String date = "20241117"; // 假设这是你要检查的日期字符串
String[] shuzi = {"012", "123", "234", "345", "456", "567"};for (String num : shuzi) {if (date.contains(num)) {System.out.println("日期中包含序列:" + num);} else {System.out.println("日期中不包含序列:" + num);}
}
  1. 使用正则表达式
    如果你需要更复杂的匹配,可以使用正则表达式来检查字符串中是否包含特定的模式。例如,你可以使用PatternMatcher类来实现这一点。
import java.util.regex.Pattern;
import java.util.regex.Matcher;String date = "20241117";
String[] shuzi = {"012", "123", "234", "345", "456", "567"};Pattern pattern = Pattern.compile("|".join(shuzi)); // 构建一个正则表达式,包含所有要检查的序列
Matcher matcher = pattern.matcher(date);for (String num : shuzi) {if (matcher.find()) {System.out.println("日期中包含序列:" + num);} else {System.out.println("日期中不包含序列:" + num);}
}

请注意,这里的"|".join(shuzi)是一个简化的写法,实际上Java中没有直接的join方法,你需要自己实现或者使用其他方式来构建正则表达式字符串。例如,你可以使用StringBuilder来构建正则表达式字符串:

StringBuilder regex = new StringBuilder();
for (String num : shuzi) {regex.append(num).append("|");
}
regex.setLength(regex.length() - 1); // 移除最后一个"|"
Pattern pattern = Pattern.compile(regex.toString());

这两种方法都可以有效地检查一个字符串日期中是否包含特定的数字序列。选择哪种方法取决于你的具体需求和偏好。

4.AC代码

package yunkePra;import java.text.SimpleDateFormat;
import java.time.Year;
import java.time.YearMonth;
import java.util.Calendar;public class p3 {public static void main(String[] args) {
//		System.out.println(5);String[] shuzi = {"012","123","234","345","456","567"};int result = 0;for(int i=1;i<=12;i++) {YearMonth yearMonth = YearMonth.of(2022, i);int days = yearMonth.atEndOfMonth().getDayOfMonth();for(int j=1;j<=days;j++) {String date = String.format("%04d%02d%02d",2022,i,j);for (String num:shuzi) {if (date.contains(num)) {result++;break;}}}}System.out.println(result);}
}

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

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

相关文章

另外一种缓冲式图片组件的用法

文章目录 1. 概念介绍2. 使用方法2.1 基本用法2.2 缓冲原理3. 示例代码4. 内容总结我们在上一章回中介绍了"FadeInImage组件"相关的内容,本章回中将介绍CachedNetworkImage组件.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中介绍的CachedNetwo…

Linux下多线程

在Linux下的底层里并没有多线程这个概念&#xff0c;取而代之的是轻量级进程的概念。应为在Llinu下内核下并没有TCB,而只有PCB。 线程是什么 在⼀个程序⾥的⼀个执⾏路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“⼀个进程内部 的控制序…

Win10/11 安装使用 Neo4j Community Edition

如果你下载的是 Neo4j Community Edition 的压缩包&#xff0c;意味着你需要手动解压并配置 Neo4j。以下是详细的使用步骤&#xff1a; 0. 下载压缩包 访问Neo4j官网&#xff0c;找到 Community Edition 版本并选择 4.x 或者 5.x 下载&#xff1a;https://neo4j.com/deployme…

PCB+SMT线上报价系统+PCB生产ERP系统自动化拼板模块升级

PCB生产ERP系统的智能拼版技术&#xff0c;是基于PCB前端报价系统获取到的用户或市场人员已录入系统的板子尺寸及set参数等&#xff0c;按照最优原则或利用率最大化原则自动进行计算并输出拼版样式图和板材利用率&#xff0c;提高工程人员效率&#xff0c;减少板材的浪费。覆铜…

Excel根据条件动态索引单元格范围

假如我是一个老板&#xff0c;下面有数不胜数的员工&#xff0c;我要检查他们每周的工作产出&#xff0c;列一个排行榜&#xff0c;提高员工积极性&#xff0c;毕竟多劳多得嘛。 每天去手动统计&#xff0c;未免显得不太聪明&#xff0c;我们可以利用公式来解决这个问题。 我们…

SpringBoot配置相关的内容

依赖Starter和Parent 查依赖坐标网站&#xff1a;Maven Repository: Search/Browse/Explorehttps://mvnrepository.com/ 设置配置文件 配置文件相关的配置 yml多个数据的书写 配置文件的读取

机器学习-37-对ML的思考之机器学习发展的三个阶段和驱动AI发展三驾马车的由来

文章目录 1 引言2 机器学习发展的三个阶段2.1 萌芽期(20世纪50年代)2.1.1 达特茅斯会议(人工智能诞生)2.1.2 机器学习名称的由来2.2 知识期(20世纪80年代)2.2.1 知识瓶颈问题2.2.2 机器学习顶级会议ICML2.2.3 Machine Learning创刊2.2.4 神经网络规则抽取2.3 算法期(20世纪90年…

使用win32com将ppt(x)文件转换为pdf文件

本文来记录下如何使用win32com将ppt(x)文件转换为pdf文件 文章目录 win32com概述win32com优缺点代码实例本文小结 win32com概述 Pywin32 是一个用于与 Microsoft Windows 操作系统交互的 Python 扩展模块&#xff0c;它提供了对多个 Windows API 的访问&#xff0c;包括对 Mic…

鸿蒙实战:页面跳转

文章目录 1. 实战概述2. 实现步骤2.1 创建项目2.2 准备图片素材2.3 编写首页代码2.4 创建第二个页面 3. 测试效果4. 实战总结 1. 实战概述 实战概述&#xff1a;本实战通过ArkUI框架&#xff0c;在鸿蒙系统上开发了一个简单的两页面应用。首页显示问候语和“下一页”按钮&…

uniapp微信小程序接入airkiss插件进行WIFI配网

本文可参考uniapp小程序插件 一.申请插件 微信公众平台设置页链接&#xff1a;微信公众平台 登录您的小程序微信公众平台&#xff0c;进入设置页&#xff0c;在第三方设置->插件管理->添加插件中申请AiThinkerAirkissforWXMini插件&#xff0c;申请的插件appId为【wx6…

django解决跨域问题

django解决跨域问题 第一步 查看自己的 django 依赖里面有没有 django-cors-headers 包 直接 cmd pin list第二步如果没有 在自己的 pycharm 里面安装 django-cors-headers 包 pip install django-cors-headers第三步检查是否安装成功 查看自己的 django-cors-headers 安…

【51单片机】LCD1602液晶显示屏

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 LCD1602存储结构时序结构 编码 —— 显示字符、数字 LCD1602 LCD1602&#xff08;Liquid Crystal Display&#xff09;液晶显示屏是…

【C++派生类新增对象的初始化顺序】单继承下派生类新增成员对象的初始化顺序

单继承下派生类新增成员对象的初始化顺序 &#xff08;1&#xff09;【意识】派生类新增成员对象也要初始化&#xff0c;千万别忘&#xff01; &#xff08;2&#xff09;派生类构造函数执行顺序 ①调用基类构造函数 ②对派生类的新增成员对象初始化[调用顺序为类中声明顺序] ③…

红外遥控信号解码

红外遥控信号解码 之前就已经做过红外遥控的解码了&#xff0c;但是一直没有做记录&#xff0c;最近的项目又使用到了红外遥控&#xff0c;索性就把他捡起来记录一下&#xff0c;对于信号的解码&#xff0c;我一般的习惯都是先用逻辑分析仪抓取一下信号波形&#xff0c;然后对…

基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络

一、介绍 垃圾识别分类系统。本系统采用Python作为主要编程语言&#xff0c;通过收集了5种常见的垃圾数据集&#xff08;‘塑料’, ‘玻璃’, ‘纸张’, ‘纸板’, ‘金属’&#xff09;&#xff0c;然后基于TensorFlow搭建卷积神经网络算法模型&#xff0c;通过对图像数据集进…

stdin文件流指针

stdin文件流指针&#xff08;FILE *&#xff09;&#xff0c;用于表示标准输入流。它通常与键盘进行交互&#xff0c;也可以通过重定向将其他输入源作为标准输入。

GPU分布式通信技术-PCle、NVLink、NVSwitch深度解析

GPU分布式通信技术-PCle、NVLink、NVSwitch 大模型时代已到来&#xff0c;成为AI核心驱动力。然而&#xff0c;训练大模型却面临巨大挑战&#xff1a;庞大的GPU资源需求和漫长的学习过程。 要实现跨多个 GPU 的模型训练&#xff0c;需要使用分布式通信和 NVLink。此外&#xf…

调用门提权

在我写的2.保护模式&#xff0b;段探测这篇文章中&#xff0c;我们提到了S位对于段描述符的控制&#xff0c;之前我们已经介绍了代码段和数据段&#xff0c;现在我们来把目光转到系统段 在这么多中结构里面&#xff0c;我们今天要介绍的就是编号为12的&#xff0c;32位调用门 结…

文心一言编写小球反弹程序并优化

使用文心一言尝试编写一个小游戏&#xff0c;先完成 1.python中用pygame模块设计出一个显示区域720x540的屏幕&#xff0c;并绘制一个小球&#xff0c;可以完成小球在显示区域内自动随机直线移动&#xff0c;碰到显示区域的便捷并反弹 import pygame import random import sy…

华为开源自研AI框架昇思MindSpore应用案例:人体关键点检测模型Lite-HRNet

如果你对MindSpore感兴趣&#xff0c;可以关注昇思MindSpore社区 一、环境准备 1.进入ModelArts官网 云平台帮助用户快速创建和部署模型&#xff0c;管理全周期AI工作流&#xff0c;选择下面的云平台以开始使用昇思MindSpore&#xff0c;获取安装命令&#xff0c;安装MindSpo…