【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.pswp.cn/news/712739.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712739.shtml
英文地址,請注明出處:http://en.pswp.cn/news/712739.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

react Hook useEffect的基本使用及注解

一、概述 useEffect是React提供的一個Hook&#xff0c;用于在函數組件中執行副作用操作。副作用操作通常包括數據獲取、訂閱事件、手動操作DOM等。useEffect可以讓我們在函數組件中模擬類組件的生命周期方法&#xff08;如componentDidMount、componentDidUpdate、componentWi…

vue3+ts實現圖片預覽功能

首先&#xff0c;需要創建一個Vue組件&#xff0c;用于顯示圖片和預覽圖。 <template><div><img :src"imageSrc" mouseover"showPreview" mouseout"hidePreview" /><div v-if"previewVisible" class"previ…

【計算機考研】學碩還是專碩?

這里面沒有什么更好的選擇&#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…

P2440 木材加工

題目背景 要保護環境 題目描述 木材廠有 &#xfffd;n 根原木&#xff0c;現在想把這些木頭切割成 &#xfffd;k 段長度均為 &#xfffd;l 的小段木頭&#xff08;木頭有可能有剩余&#xff09;。 當然&#xff0c;我們希望得到的小段木頭越長越好&#xff0c;請求出 &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 標準算…

Java底層自學大綱_互聯網安全設計篇

互聯網安全設計專題_自學大綱所屬類別學習主題建議課時&#xff08;h&#xff09; A 互聯網安全架構平臺設計001 如何防御XSS攻擊與防止抓包篡改數據2.5 A 互聯網安全架構平臺設計002 spring security實現動態權限控制2.5 A 互聯網安全架構平臺設計003 spring security整合j…

基于RISC-V架構的通信DSP的設計以及在5G RedCap基帶中的應用(六)-結論與展望

6 結論與展望 6.1 研究成果總結 基于RISC-V架構的向量指令集和通訊擴展指令集在5G Redcap基帶處理器中的應用&#xff0c;可以有效提升處理器在處理大量數據時的性能以及滿足特定應用需求的無線通訊能力。隨著5G技術的發展&#xff0c;對于滿足特定應用需求的行業&#xff0c;…

CentOS7 Mysql 忘記密碼或臨時密碼進不去時怎么跳過密碼進去然后再更改密碼

CentOS7 Mysql 忘記密碼或臨時密碼進不去時怎么跳過密碼進去然后再更改密碼 1、進文件 vi /etc/my.cnf2、加skip-grant-tables設置跳過密碼 在[mysqld]下面加 skip-grant-tables3、mysql -u root -p直接回車無密碼進去mysql mysql -u root -p3、先更新&#xff0c;不執行這…

實現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/ 首先進入下…

【前端面試題3】如何實現一個元素的水平垂直居中

以下是題目的布局代碼&#xff1a; <div class"container"><div class"item" style"width: 100px; height: 100px; background: #999;">塊狀元素</div> </div><div class"container"><div class&qu…

Golang處理gRPC請求/響應元數據

前段時間實現內部gRPC框架時&#xff0c;為了實現在服務端攔截器中打印請求及響應的頭部信息&#xff0c;便查閱了部分關于元數據的資料。因為中文網絡上對于該領域的信息較少&#xff0c;于是在這做了一些簡單的總結。 元數據 gRPC的元數據&#xff08;metadata&#xff09;…

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…