首页 > 编程语言 >【教3妹学编程-算法题】一年中的第几天

【教3妹学编程-算法题】一年中的第几天

时间:2024-01-01 18:33:14浏览次数:38  
标签:第几天 int 31 编程 妹学 2019 year date month

【教3妹学编程-算法题】一年中的第几天_字符串

3妹:“太阳当空照,花儿对我笑,小鸟说早早早,你为什么背上炸药包”
2哥 :3妹,什么事呀这么开森。
3妹:2哥你看今天的天气多好啊,经过了一周多的寒潮,天气总算暖和些了。
2哥:是啊,都说一九二九不出手,三九四九冰上走,这才一九就已经可以冰上走了。
3妹:上海这边虽然也挺冷了,但是还算好,想想北方都已经泼水成冰啦!
2哥:泼水成冰好玩是好玩,但是一定要注意防寒哦,看新闻都有人冻伤了。
3妹:是啊,还是待在室内比较好
2哥:给你出了一道题发你微信里了, 上班通勤的路上记得看一下,回来问你答案~

【教3妹学编程-算法题】一年中的第几天_数组_02


3妹:知道啦,难不倒我!

题目:

给你一个字符串 date ,按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。返回该日期是当年的第几天。

示例 1:
输入:date = "2019-01-09"
输出:9
解释:给定日期是2019年的第九天。
示例 2:
输入:date = "2019-02-10"
输出:41

提示:

date.length == 10
date[4] == date[7] == '-',其他的 date[i] 都是数字
date 表示的范围从 1900 年 1 月 1 日至 2019 年 12 月 31 日

思路:

【教3妹学编程-算法题】一年中的第几天_字符串_03

根据题意,直接计算:
我们首先从给定的字符串 date中提取出年 year,月 month以及日 day。

这样一来,我们就可以首先统计到 month 的前一个月为止的天数。这一部分只需要使用一个长度为 12的数组,预先记录每一个月的天数,再进行累加即可。随后我们将答案再加上 day,就可以得到 date是一年中的第几天。

需要注意的是,如果 year是闰年,那么二月份会多出一天。闰年的判定方法为:year是 400的倍数,或者 year 是 4 的倍数且不是 100的倍数。

java代码:


class Solution {
    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));

        int[] amount = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
            ++amount[1];
        }

        int ans = 0;
        for (int i = 0; i < month - 1; ++i) {
            ans += amount[i];
        }
        return ans + day;
    }
}


标签:第几天,int,31,编程,妹学,2019,year,date,month
From: https://blog.51cto.com/u_6813689/9057959

相关文章

  • 谈谈计算机编程语言里的 literal(字面量)
    在编程语言中,literal(字面值)是指源代码中直接表示某种常量值的标记或符号。字面值是编程语言中的基本构建块之一,它们表示程序中的固定数据。字面值的存在是为了使程序员能够直观地表达数据,而不必依赖于变量或表达式的计算结果。字面值可以分为多种类型,其中包括整数、浮点数、字符串......
  • 《Java编程思想第四版》学习笔记51--关于线程组的控制
    //:ThreadGroup1.java//Howthreadgroupscontrolpriorities//ofthethreadsinsidethem.publicclassThreadGroup1{publicstaticvoidmain(String[]args){//Getthesystemthread&printitsInfo:ThreadGroupsys=Thread.currentThread().......
  • 什么是 Shell,Shell 功能介绍和脚本编程入门实例
    1.概述Shell一种特殊的交互工具,用于用户和Linux系统交互,其功能和构成如下所示:交互工具,为用户提供了启动程序、管理文件系统中的文件和运行在Linux系统上的进程。核心是命令行提示符,命令行提示符是Shell负责交互的部分,允许输入命令,然后解释命令,并在内核中执行。包含了一组内部命......
  • 编程中不初始化变量的垃圾值的危害
    话不多说,直接上代码,为了验证elf的,编了了示例代码study.c1#include<stdio.h>23#defineNUMBER_114#defineNUMBER_2256intmain(intargc,char**argv)7{8inta;9intb;10intc;11a=NUMBER_1;12b=NUMBER_2;13c=a+......
  • 【并发编程】CopyOnWriteArrayList详解与原理
    ......
  • java-多线程编程
    多线程是指在一个程序中同时执行多个线程,每个线程都是独立运行的。Java中的多线程编程允许在同一个程序中同时执行多个任务,以提高程序的效率和响应性。以下是一些与Java多线程编程相关的重要概念:线程(Thread):线程是程序的执行单元,可以并发执行多个任务。在Java中,可以通过创建Thre......
  • Modbus转Profinet,不会编程也能用!轻松快上手!
    Modbus转Profinet,不会编程也能用!轻松快上手!Modbus转Profinet是一种用于工业自动化领域的通信协议转换器,可以将Modbus协议转换为Profinet协议,实现设备之间的数据交换与通信。这个工具的使用非常简单,即使没有编程经验的人也可以轻松上手。即使不会编程的人也可以轻松快速上手使用Mo......
  • java-面向对象编程
    面向对象编程是一种编程范式,它将程序设计组织为对象的集合,这些对象通过相互之间的交互来完成任务。下面是面向对象编程的一些重要概念和Java的相关实现:类(Class)和对象(Object):在Java中,类是定义对象的模板。它描述了对象的属性(成员变量)和行为(方法)。对象是类的实例化结果,可以创建多......
  • PC9094超小体积封装可编程过流过压保护IC
    概述:PC9094过电压和过电流保护该器件具有低80mΩ(TYP)导通电阻集成MOSFET,主动保护低电压系统的电压供应故障高达+29V直流电。输入电压超过过电压阈值将导致内部MOSFET关闭,防止损坏下游的过大电压设备。过电压保护阈值默认为6V。2.3V/3.6V/11V/16V/23V还有其他版本OVP和无OVP。PC9094......
  • Google Java 编程风格指南
    目录前言术语说明指南说明源文件基础文件名文件编码:UTF-8特殊字符空白字符特殊转义序列非ASCII字符源文件结构许可证或版权信息package语句import语句import不要使用通配符不要换行顺序和间距类声明只有一个顶级类声明类成员顺序重载:永不分离格式大括号使用大括号(即使大括号仅是......