【Leetcode】1154. 一年中的第几天

文章目录

  • 题目
  • 思路
  • 代码

题目

1154. 一年中的第几天链接
在这里插入图片描述

思路

题目要求是给定一个字符串 date,它代表一个日期,采用标准的 YYYY-MM-DD 格式。需要计算这个日期是当年的第几天。

首先,我们可以通过字符串的索引来提取年、月和日的数值,并将其转换为整数,例如:

int year = (date[0] - '0') * 1000 + (date[1] - '0') * 100 + (date[2] - '0') * 10 + (date[3] - '0');
int month = (date[5] - '0') * 10 + (date[6] - '0');
int day = (date[8] - '0') * 10 + (date[9] - '0');

接下来,可以利用月份的信息和闰年的判断,逐个累加每个月的天数,计算给定日期在当年的第几天。这个过程可以优化,无需逐个判断每个月的天数,可以通过数组预先存储每个月的天数信息:

int daysInMonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

这个数组的索引代表月份,数组的值代表该月的天数。然后利用闰年的条件,对二月的天数进行修改:

if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {
    daysInMonth[2] = 29; // 闰年二月有29天
}

最后,利用循环累加到给定日期的前一个月,将当月的天数加上,即可得到该日期是当年的第几天:

int totalDays = 0;
for (int i = 1; i < month; ++i) {
    totalDays += daysInMonth[i];
}
totalDays += day; // 加上当前月的天数

将得到的 totalDays 返回即可。

代码

class Solution {
public:
    int dayOfYear(string date) {
        for(int i=0;i<date.size();++i)cout<<i<<' '<<date[i]<<endl;
        int nianfen=(date[0]-'0')*1000+(date[1]-'0')*100+(date[2]-'0')*10+(date[3]-'0');
        int yuefen=(date[5]-'0')*10+(date[6]-'0');
        int riqi=(date[8]-'0')*10+(date[9]-'0');
        //cout<<nianfen<<' '<<yuefen<<' '<<riqi;
        if(yuefen>1)riqi+=31;
        if(yuefen>2&&(nianfen%400==0||(nianfen%4==0&&nianfen%100!=0)))riqi+=29;
        else if(yuefen>2)riqi+=28;
        if(yuefen>3)riqi+=31;
        if(yuefen>4)riqi+=30;
        if(yuefen>5)riqi+=31;
        if(yuefen>6)riqi+=30;
        if(yuefen>7)riqi+=31;
        if(yuefen>8)riqi+=31;
        if(yuefen>9)riqi+=30;
        if(yuefen>10)riqi+=31;
        if(yuefen>11)riqi+=30;
        return riqi;
        
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言实验5:结构体

目录 一、实验要求 二、实验原理 1. 普通结构体 1.1 显示声明结构体变量 1.2 直接声明结构体变量 ​编辑 1.3 typedef在结构体中的作用 2. 结构体的嵌套 3. 结构体数组 4. 指向结构体的指针 4.1 静态分配 4.2 动态分配 三、实验内容 1. 学生数据库 代码 截图 …

穿越时光的镜头:2023回顾与2024展望

前言 2023 年就像一本充满着惊喜和挑战的书籍&#xff0c;它的每一页都留下了我生活中不同的痕迹。回顾过去&#xff0c;我发现了许多意想不到的成长和启示&#xff0c;也体验了生活的起起伏伏。 这篇文章是对 2023 年的一个小小总结&#xff0c;也是对未来的一点期许。在这里…

PAT 乙级 1046 划拳

划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为&#xff1a;每人口中喊出一个数字&#xff0c;同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和&#xff0c;谁就赢了&#xff0c;输家罚一杯酒。两人同赢或两人同输则继续下一轮&…

Unity中URP下精度修饰符real

文章目录 前言一、real是什么&#xff1f;1、我们在项目的Packages下找到如下文件&#xff1a;2、HAS_HALF(1代表有half精度&#xff0c;0代表没有half精度)3、PREFER_HALF4、REAL_IS_HALF5、如果 real is half6、否则为float 二、总结 前言 在使用雾效时&#xff0c;ComputeFo…

Git使用教程 gittutorial

该教程对该文章的翻译&#xff1a;https://git-scm.com/docs/gittutorial 本文介绍怎用使用 Git 导入新的工程、修改文件及如何其他人同步开发。 首先&#xff0c; 可以使用以下指令获取文档帮助 git help log笔者注&#xff1a;不建议看这个文档&#xff0c;标准的语法介绍…

Lesson 06 vector类(上)

C&#xff1a;渴望力量吗&#xff0c;少年&#xff1f; 文章目录 一、vector是什么&#xff1f;二、vector的使用1. 构造函数2. vector iterator3. vector 空间增长问题4. vector增删查改 三、vector实际使用 一、vector是什么&#xff1f; vector是表示可变大小数组的序列容器…

条款13:以对象管理资源

文章目录 没有管理的情况解决办法之unique_ptr智能指针解决办法之shared_ptr智能指针总结 没有管理的情况 资源是指一旦你使用完它&#xff0c;就需要返回系统的东西。 class Investment { ... }; // 投资类型层次结构的基类 Investment* createInvestment(); // 工厂函数&…

Vue学习计划-Vue3--初识Vue3,vite创建Vue3项目

1. Vue3简介 性能的提升 打包大小减少41%初次渲染快55%&#xff0c;更新渲染快133%内存减少54% 源码的升级 使用Proxy代替defineProperty实现响应式重写虚拟DOM的实现和Tree-Shaking 拥抱TypeScript Vue3可以更好的支持TypeScript 新的特性 Composition Api(组合Api) setupref…

基于CMake的大型C++工程组织

此文适合大型C工程&#xff0c;涉及到多个自定义库&#xff0c;多个第三方库&#xff0c;以及还有给第三方用户进行二次开发的需求下&#xff0c;应对这种复杂编译环境下的工程组织方式的一些经验介绍&#xff0c;希望给大型工业软件的开发者一些参考 一个大型工程&#xff0c…

python统计分析——协方差和pearson相关系数

参考资料&#xff1a;用python动手学统计学 使用数据见代码&#xff1a; dic{"x":[18.5,18.7,19.1,19.7,21.5,21.7,21.8,22.0,23.4,23.8],"y":[34,39,41,38,45,41,52,44,44,49] } cov_datapd.DataFrame(dic) 变量x、y的协方差Cov(x,y)的计算公式如下&am…

解决达梦数据库服务启动失败,错误 2: 系统找不到指定的文件

当在我们在Window环境下使用达梦数据库的过程中,可能会遇到这种错误,重启电脑后达梦数据库突然连接不上了,无法访问,但是我们打开任务管理器查看服务时,会发现DmServiceDMSERVER仍然存在,但是已停止的状态。 点击服务启动时,报错: Windows 无法启动 DmserviceDMSERVER…

类的加载顺序问题-demo展示

面试的的时候经常会被问到包含静态代码块、实例代码块和构造器等代码结构的加载顺序问题&#xff0c;下面借用一个面试题&#xff0c;回顾一下类的代码加载顺序。 public class AooTest {public static void main(String[] args) {AooTest.f1();}static AooTest test1 new Ao…

数据库——建立ER模型及关系模型转换

​ 【实验内容及要求】 使用画图工具或MySQL Workbench等建模工具设计出相应的ER图&#xff0c;将局部ER图合并为一个整体ER模型&#xff0c;在ER模型中填加多样性约束&#xff0c;建立显示主键的ER模型&#xff0c;标识实体的属性&#xff0c;确认主键、外键。将上述ER图转化…

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工作原理

深入浅出图解C#堆与栈 C# HeapingVS Stacking第二节 栈基本工作原理 [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈](https://mp.csdn.net/mdeditor/101021023)[深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工作原理](https://mp.cs…

brew 安装openapi-generator提示@@HOMEBREW_JAVA@@/bin/java: No such file or directory

brew 安装openapi-generator之后&#xff0c;运行openapi-generator命令&#xff0c;提示HOMEBREW_JAVA/bin/java: No such file or directory 经过一番查阅&#xff0c;应该是Java没有配置到环境变量中 查询电脑已经安装的Java版本 /usr/libexec/java_home 编辑.bash_profile…

Linux环境grep搜索方法记录

1 grep grep 命令&#xff0c;用来搜索字符串所在位置&#xff0c;可以具体到不同文件&#xff0c;不同行&#xff1b; 在Linux 下&#xff0c;查看命令释义如下 zhaocubuntu2004:~$ grep --help Usage: grep [OPTION]... PATTERNS [FILE]... Search for PATTERNS in each FI…

大数据 - 大数据入门第一篇 | 关于大数据你了解多少?

&#x1f436;1.1 概述 大数据&#xff08;BigData):指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合&#xff0c;是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 大数据主要解决、海量数据的采…

2023-12-21 LeetCode每日一题(美丽塔 II)

2023-12-21每日一题 一、题目编号 2866. 美丽塔 II二、题目链接 点击跳转到题目位置 三、题目描述 给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。 你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i &#xff0c;高度为 heights[i] 。 如果以下条件满足&a…

[JS设计模式]Prototype Pattern

Prototype pattern Prototype pattern可便于同类型的多个对象共享属性。原型&#xff08;prototype&#xff09;是JS原生的对象&#xff0c;其他对象可以通过原型链&#xff08;prototype chain&#xff09;来访问原型。单独看这句描述可能还是有点儿抽象&#xff0c;下面通过…

过滤器、拦截器、切面

过滤器、拦截器、切面作用范围 原理不同范围不同具体参考[过滤器、拦截器、切面异同](https://juejin.cn/post/7110104873265758222) 执行顺序&#xff1a;过滤器>拦截器>切面 过滤器、拦截器属于请求层面的拦截&#xff1b;切面属于方法层面的拦截 原理不同 过滤器和拦…