当前位置: 首页 > news >正文

【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;}
};

相关文章:

  • Go语言程序设计-第6章--方法
  • 解决SpringBoot中出现的跨域请求问题
  • RainBond 构建组件 rbd-chaos 故障解决 【真实案例】
  • 单例模式的双重检查锁定是什么?
  • 如何使用ModuleShifting测试Module Stomping和Module Overloading注入技术
  • LeetCode75| 二叉搜索树
  • 新建虚拟环境并与Jupyter内核连接
  • 【Harmony OS - Stage应用模型】
  • Mybatis-Plus中怎么使用MySQL的内置函数
  • DevOps系列之 JNI实现Java调用C的实现案例
  • 负载均衡概述
  • 微服务(1)
  • ROS学习记录:使用RViz观测激光雷达传感器数据
  • Hive中支持毫秒级别的时间精度
  • 浅谈冯诺依曼体系和操作系统
  • hexo+github搭建个人博客
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • CentOS 7 修改主机名
  • JAVA_NIO系列——Channel和Buffer详解
  • JDK9: 集成 Jshell 和 Maven 项目.
  • k8s 面向应用开发者的基础命令
  • Magento 1.x 中文订单打印乱码
  • Node 版本管理
  • PAT A1092
  • react-native 安卓真机环境搭建
  • sessionStorage和localStorage
  • Vue全家桶实现一个Web App
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 二维平面内的碰撞检测【一】
  • 工程优化暨babel升级小记
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 开源地图数据可视化库——mapnik
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 扑朔迷离的属性和特性【彻底弄清】
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 使用parted解决大于2T的磁盘分区
  • 双管齐下,VMware的容器新战略
  • 新版博客前端前瞻
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​人工智能书单(数学基础篇)
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (Git) gitignore基础使用
  • (LeetCode C++)盛最多水的容器
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (四)JPA - JQPL 实现增删改查
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .Net Core和.Net Standard直观理解
  • .NET MVC第五章、模型绑定获取表单数据
  • .net 调用海康SDK以及常见的坑解释
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型