【LeetCode】一周中的第几天+ 一年中的第几天

2023-12-30

文章目录

    • 一周中的第几天
          • 方法一:模拟
            • 思路
            • 步骤
          • 方法二:调用库函数
          • 方法三:调用库函数
    • [1154. 一年中的第几天](https://leetcode.cn/problems/day-of-the-year/)
          • 方法一:直接计算
            • 思路:
          • 方法二:调用库函数
            • 思路

一周中的第几天

在这里插入图片描述

  • 提示:给出的日期一定是在 19712100 年之间的有效日期。
方法一:模拟
思路
  • 1.可以根据1970年的最后一天(周四),计算出和输入日期间隔了几天(ans+之前的年份天数和+当前的月份天数和+输日的天数)

  • 2.求出具体的天数之后进行取模,得到具体的星期

步骤

1.定义一个字符串类型的数组,大小为7,记录星期字典

定义一个int类型的数组,大小为12,记录12个月份分别对应的天数(闰年进行判断)

2.定义一个初始天数ans=4(从周四开始)

3.从1971年开始遍历,直到输入的年份,判断当前年是否为闰年,初始值加上对应的天数

4.遍历月份直到输入月份,二月的情况根据是否是闰年来加上额外的一天

5.最后加上输入的天数,所求之和取模

    static String[] week =new String[] {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};//每周对应的星期static int[] nums = new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//每个月对应的天数public String dayOfTheWeek(int day, int month, int year) {int ans = 4;//初始值为4,从周四开始for (int i = 1971; i < year; i++) {boolean isLeapYear = (i % 4 == 0 && i % 100 != 0) || i % 400 == 0;//判断是否为闰年ans += isLeapYear ? 366 : 365;//是闰年加366,不是加355}for (int i = 1; i < month; i++) {ans += nums[i - 1];//之前的月份数之和if (i == 2 && ((year % 4 == 0 && year% 100 != 0) || year % 400 == 0)){ans++;//如果当前是闰年,单独加1}}ans += day;//加上输入的天数return week[ans % 7];//求模返回对应星期}
方法二:调用库函数

1.使用LocalDate.of(year, month, day)创建了一个LocalDate对象date,表示给定的日期。LocalDate是Java 8中新增的日期类,用于处理日期相关操作。(Java8新增)

2.通过调用date.getDayOfWeek()方法获取该日期的星期几信息,getDayOfWeek()返回的是一个DayOfWeek枚举类型,表示星期几。

3.最后,通过调用getDisplayName(TextStyle.FULL_STANDALONE, Locale.ENGLISH)方法,将星期几信息以全名的形式返回,使用英语的地区设置。

import java.time.LocalDate;
import java.time.format.TextStyle;
import java.util.*;class Solution {public String dayOfTheWeek2(int day, int month, int year) {LocalDate date = LocalDate.of(year, month, day);//创建了一个`LocalDate`对象`date`,表示给定的日期return date.getDayOfWeek().getDisplayName(TextStyle.FULL_STANDALONE, Locale.ENGLISH);//方法获取该日期的星期几信息//将星期几信息以全名的形式返回,使用英语的地区设置}
方法三:调用库函数

1.首先声明了一个私有的静态变量calendar,并调用其静态方法getInstance()获取一个默认时区的Calendar实例。然后声明了一个私有的静态变量weekFormat,它是一个SimpleDateFormat对象,用于格式化星期几信息。

2.使用set(year, month - 1, day)方法将calendar设置为给定日期。由于Calendar中的月份从0开始,所以需要将传入的month减去1

3.使用weekFormat.format(calendar.getTime())方法将calendar中的时间格式化为星期几的字符串,其中weekFormat是一个SimpleDateFormat对象,通过设置格式为"EEEE"来表示星期几的全名形式

    private static final Calendar calendar = Calendar.getInstance();
//获取一个默认时区的`Calendar`实例private static final SimpleDateFormat weekFormat = new SimpleDateFormat("EEEE");
//格式化星期几信息public String dayOfTheWeek3(int day, int month, int year) {calendar.set(year, month - 1, day);// 将`calendar`设置为给定日期return weekFormat.format(calendar.getTime());//`calendar`中的时间格式化为星期几的字符串}

1154. 一年中的第几天

在这里插入图片描述

方法一:直接计算
思路:

1.根据所给的字符串,分别截取出年月日的信息,转化成整数

2.根据当前年份,判断是否为闰年,是闰年:二月加1

3.之前月份天数之和,最后加上天数的信息

 
public int dayOfYear(String date) {int year = Integer.parseInt(date.substring(0, 4));int month = Integer.parseInt(date.substring(5, 7));int day = Integer.parseInt(date.substring(8));//调用substring分别截取出年月日的信息,转化为整数int[] monthes = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//每个月份的天数if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {++monthes[1];}//如果当前的闰年,二月加1天(直接改变月份字典中的数)int ans = 0;for (int i = 0; i < month - 1; ++i) {ans += monthes[i];//每个月天数之和}return ans + day;}
方法二:调用库函数
思路

1.指定日期字符串的格式

2.解析为 LocalDate 对象

3.返回该日期在其所属年份中的天数

    private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
//定义了一个 DateTimeFormatter 对象,它指定了日期字符串的格式为 "yyyy-MM-dd"public int dayOfYear2(String date) {return LocalDate.parse(date, formatter).getDayOfYear();//LocalDate.parse() 方法将日期字符串解析为 LocalDate 对象//getDayOfYear() 方法则返回该日期在其所属年份中的天数}

点击移步博客主页,欢迎光临~

偷cyk的图

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

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

相关文章

【计算机考研】学硕还是专硕?

这里面没有什么更好的选择&#xff0c;大家都知道专硕录取人数多&#xff0c;学硕录取人数上&#xff0c;博弈一直存在 单就考研的难度上来说&#xff0c;专硕的难度确实要比学说低很多的&#xff0c;同样的专业课的情况下&#xff0c;专硕的考研数学考的是数学二和英语二&…

rk3568 gamc0 控制器寄存器配置不了导致连接不上phy

系统启动 GMAC 的驱动开机 log 上出现打印&#xff1a;No PHY found 或者 Cannot attach to PHY。查阅rk 官方gmac 配置指导手册出现改问题的原因可能如下&#xff1a; 但反复检查硬件和软件发现都没问题。看内核启动日志发现gamc0 在启动过程中读取gmac0 的版本id是读取不到&a…

表格自定义音频播放组件

1.在使用的地方调用 <Audiosvue ref"audio" class"audio-box" :audioFile"item.cont"></Audiosvue> 2.引入组件 import Audiosvue from "/components/audio"; 3.组件 <template><div><div style"d…

优化Vue项目中 WebStorm:2023.3 对 CSS 和 HTML 的默认注释

前言 WebStorm是一种基于JetBrains IntelliJ平台的集成开发环境&#xff08;IDE&#xff09;&#xff0c;专门用于Web开发。它支持JavaScript、HTML和CSS等语言&#xff0c;并提供了丰富的功能和工具&#xff0c;以提高开发人员的效率。但是&#xff0c;在开发Vue项目中发现&a…

(科目三)计算机操作系统

1、操作系统的基本概念及功能 1.1概念 一、操作系统的概念 操作系统是运行在裸机之上的&#xff0c;控制和管理计算机硬件和软件资源、合理组织计算机工作流程一级方便用户操作的程序集合。 操作系统由一套分层次的控制程序组成&#xff0c;是计算机硬件的一级扩充是软件系…

【爬虫逆向实战 逆向滑块 Python+Node】今天逆向的网站有点嘿嘿,还是仅供学习,别瞎搞

逆向日期&#xff1a;2024.03.01 使用工具&#xff1a;Node.js、Python 加密方法&#xff1a;AES标准算法 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要做的可联系我】 AES解密处理&#xff08;直接解密即可&#xff09;&#xff08;crypto-js.js 标准算…

实现unity场景切换

本文实现两个按键实现场景1和场景2之间的切换 ①首先在unity 3D中创建两个场景&#xff0c;分别为Scene1和Scene2 ②在Scene1中创建一个Button&#xff0c;修改txt内容为“To Scene2”&#xff0c;并在Buttons下创建一个空物体&#xff0c;用于挂载脚本。 脚本Trans Scene.…

操作系统x面试|进程与线程

1. 线程进程的区别 进程可以称为是资源分配的最小单元&#xff0c;而线程可以称为是处理器分配的最小单元。 资源包括内存空间。同时进程是一段代码的执行过程&#xff0c;这段代码需要多少的内存在代码确定时已经确定下来了。 处理器就是执行单元&#xff0c;一个进程可以拆解…

程序员的金三银四求职宝典

程序员的金三银四求职宝典 金三银四&#xff0c;即三月和四月&#xff0c;是程序员求职的黄金时期。在这个关键时期&#xff0c;求职者们需要做好充分的准备&#xff0c;以便在面试中脱颖而出。以下是一些建议&#xff0c;帮助程序员在金三银四期间更好地准备求职&#xff1a;…

【DAY06 软考中级备考笔记】数据结构:树

数据结构&#xff1a;树 3月1日 – 天气&#xff1a;晴 之前在B站看的视频讲的是在太过简单&#xff0c;弃了。现在换了新的视频继续&#xff0c;后续会重新看前面的视频补过来。https://www.bilibili.com/video/BV1pT4m1S7uH/ 1. 树的基本概念 需要注意的是&#xff1a; 并不是…

CentOS7使用yum安装MySQL8.0教程

CentOS7使用yum安装MySQL8.0 一、下载MySQL Yum下载仓库二、安装MySQL三、为MySQL运行提供相关的用户以及环境四、启动MySQL五、MySQL开机自启六、修改MySQL中root账户的密码 一、下载MySQL Yum下载仓库 MySQL下载地址&#xff1a;https://dev.mysql.com/downloads/ 首先进入下…

Java通过Semaphore控制同一时间只有3个线程运行

怎么控制同一时间只有3个线程运行&#xff1f; 直接上代码 import java.util.Date; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Semaphore;public class SemaphoreThreadPoolExample {private static…

【网站项目】324企业人事信息管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

Windows下卸载JDK

操作步骤&#xff1a; 直接到windows程序卸载面板进行卸载 然后删除已配置的环境变量

深入解析Golang的encoding/ascii85库:从基础到实战

深入解析Golang的encoding/ascii85库&#xff1a;从基础到实战 引言基础知识什么是ASCII85编码&#xff1f;ASCII85编码的工作原理ASCII85编码的优点ASCII85编码的缺点 使用Golang的encoding/ascii85库引入encoding/ascii85包ASCII85编码ASCII85解码实战示例小结 进阶技巧和最佳…

用于游戏开发的顶级 PYTHON 框架

一、说明 我们试图用python开发游戏&#xff0c;一旦产生这个念头&#xff0c;就伴随这样一个问题&#xff1a;当今用于构建游戏的领先 Python 框架有哪些&#xff1f;python下&#xff0c;支持游戏开发平台有哪些优势&#xff1f;我们在这篇博文中告诉你。 二、高级游戏平台简…

驱动高级--mknod

一、起源 仅devfs&#xff0c;导致开发不方便以及一些功能难以支持&#xff1a; 热插拔 不支持一些针对所有设备的统一操作&#xff08;如电源管理&#xff09; 不能自动mknod 用户查看不了设备信息 设备信息硬编码&#xff0c;导致驱动代码通用性差&#xff0c;即没有分离…

【改进算法】【IHAOAVOA】天鹰优化算法和非洲秃鹫混合优化算法

目录 1 主要内容 IHAOAVOA流程图 主要创新点 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序复现《IHAOAVOA: An improved hybrid aquila optimizer and African vultures optimization algorithm for global optimization problems》&#xff0c;天鹰优化算法&am…

spring boot3解决跨域的几种方式

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途。 目录 1.前言 2.何为跨域 3.跨域问题出现特征 4.方式一&#xff1a;使用 CrossOrigin 注解 5.方式二&#xff1a;自定义…

2024年3月2日 十二生肖 今日运势

小运播报&#xff1a;2024年3月2日&#xff0c;星期六&#xff0c;农历正月廿二 &#xff08;甲辰年丙寅月乙丑日&#xff09;&#xff0c;法定节假日。 红榜生肖&#xff1a;鸡、蛇、鼠 需要注意&#xff1a;狗、马、羊 喜神方位&#xff1a;西北方 财神方位&#xff1a;东…