【Leetcode】3280. 将日期转换为二进制表示

文章目录

  • 题目
  • 思路
  • 代码
  • 复杂度分析
    • 时间复杂度
    • 空间复杂度
  • 结果
  • 总结

题目

题目链接🔗
给你一个字符串 date,它的格式为 yyyy-mm-dd,表示一个公历日期。

date 可以重写为二进制表示,只需要将年、月、日分别转换为对应的二进制表示(不带前导零)并遵循 year-month-day 的格式。

返回 date 的 二进制 表示。

示例 1:

输入: date = “2080-02-29”

输出: “100000100000-10-11101”

解释:

100000100000, 10 和 11101 分别是 2080, 02 和 29 的二进制表示。

示例 2:

输入: date = “1900-01-01”

输出: “11101101100-1-1”

解释:

11101101100, 1 和 1 分别是 1900, 1 和 1 的二进制表示。

提示:

  1. d a t e . l e n g t h = = 10 date.length == 10 date.length==10
  2. d a t e [ 4 ] = = d a t e [ 7 ] = = ′ − ′ date[4] == date[7] == '-' date[4]==date[7]==,其余的 d a t e [ i ] date[i] date[i] 都是数字。
  3. 输入保证 d a t e date date 代表一个有效的公历日期,日期范围从 1900 年 1 月 1 日到 2100 年 12 月 31 日(包括这两天)。

思路

要将日期字符串从格式 yyyy-mm-dd 转换为二进制表示的字符串,可以按照以下步骤进行:

  1. 解析日期字符串:将输入的日期字符串拆分为年份、月份和日期的整数值。

  2. 转换为二进制字符串:将上述整数值分别转换为对应的二进制字符串表示。

  3. 格式化输出:按照 year-month-day 的格式,将二进制字符串组合成最终结果。

代码

class Solution {
public:string binary(int x) {string s;while (x) {s.push_back('0' + (x & 1));x >>= 1;}reverse(s.begin(), s.end());return s;}string convertDateToBinary(string date) {int year = stoi(date.substr(0, 4));int month = stoi(date.substr(5, 2));int day = stoi(date.substr(8, 2));return binary(year) + "-" + binary(month) + "-" + binary(day);}
};

复杂度分析

时间复杂度

将整数转换为二进制字符串的时间复杂度为 O(log n),其中 n 是整数的大小。由于年份、月份和日期的范围有限(年份在 1900 到 2100 之间,月份在 1 到 12 之间,日期在 1 到 31 之间),因此这些转换操作的时间复杂度可以视为常数。总体而言,时间复杂度为 O(1)

空间复杂度

存储二进制字符串所需的空间与整数的位数成正比。由于年份、月份和日期的范围有限,所需的空间也是常数。因此,空间复杂度为 O(1)

结果

在这里插入图片描述

总结

通过解析日期字符串,将年份、月份和日期分别转换为二进制字符串,并按照指定格式组合,最终实现了日期的二进制表示。由于涉及的数值范围有限,算法的时间和空间复杂度均为常数级别,效率较高

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

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

相关文章

作业:C高级:Day4

第一题 思维导图 第二题 test的指令(整数判断、字符串判断、文件判断) 结果 第三题 题目 终端输入一个C源文件名(.c结尾)判断文件是否有内容,如果没有内容删除文件,如果有内容编译并执行改文件。 代码 三种情形的结果&#xff1…

FristiLeaks_1.3靶场渗透

目录 环境搭建 开始渗透 扫一下存活(也就是扫描一下靶机IP) ​编辑 扫描端口 扫描服务 查看80端口 扫描一下目录 查看robots 再看一下images,没啥用 回头看主页面,说多喝点FRISTI,我们试试看 尝试admin和万能密码 查看源…

OpenCV的TickMeter计时类

OpenCV的TickMeter计时类 1. TickMeter是一个计时的类1.1 计算耗时1.2 计算循环的平均耗时和FPS1.3 function 2. 案例 1. TickMeter是一个计时的类 https://docs.opencv.org/4.x/d9/d6f/classcv_1_1TickMeter.html#details 1.1 计算耗时 TickMeter tm;tm.start();// do some…

logback之pattern详解以及源码分析

目录 (一)pattern关键字介绍 (二)源码分析 (一)pattern关键字介绍 %d或%date:表示日期,可配置格式化%d{yyyy-MM-dd HH:mm:ss} %r或%relative:也是日期,不过…

【专题】2024年出口跨境电商促销趋势白皮书报告汇总PDF洞察(附原数据表)

原文链接:https://tecdat.cn/?p38722 在当今全球化加速演进、数字经济蓬勃发展的大背景下,跨境电商行业正以前所未有的态势重塑国际贸易格局,成为各方瞩目的焦点领域。 根据亚马逊发布的《2024年出口跨境电商促销趋势白皮书》,…

primevue的<Menu>组件

1.使用场景 2.代码 1.给你的menu组件起个引用名 2.<Menu>组件需要一个MenuItem[] 3.你要知道MenuItem[ ]的特殊的数据格式&#xff0c;就像TreeNode[ ]一样&#xff0c;数据格式不对是不渲染的。。。。 常用的属性就这几种&#xff0c;js语言和java不一样&#xff0c;J…

NVR小程序接入平台EasyNVR使用FFmpeg取流时提示错误是什么原因呢?

在视频监控系统中&#xff0c;FFmpeg常用于从各种源&#xff08;如摄像头、文件、网络流等&#xff09;获取流媒体数据&#xff0c;这个过程通常称为“取流”。 在EasyNVR平台中&#xff0c;使用FFmpeg取流是一种常见的操作。FFmpeg作为一款强大的开源多媒体处理工具&#xff…

Springboot 升级带来的Swagger异常

当升级到Springboot 2.6.0 以上的版本后&#xff0c;Swagger 就不能正常工作了, 启动时报如下错误。当然如果你再使用sping boot Actuator 和 Springfox, 也会引起相关的NPE error. (github issue: https://github.com/springfox/springfox/issues/3462) NFO | jvm 1 | 2022/04…

编译原理期末复习-3小时速通

教材使用&#xff1a; 第二章 形式语言理论 基本概念 句子&#xff1a;只包含终结符。&#xff08;基本上就是全部由小写字母组成&#xff09;句型&#xff1a;推导过程中出现的所有符号串都叫做句型。只包含终结符的句型叫做句子。子树&#xff1a;语法树的某个节点连同他向…

关于 覆铜与导线之间间距较小需要增加间距 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/144776995 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

Spring Certified Professional 2024 (2V0-72.22)

关于认证 Spring Certified Professional (2V0-72.22) 认证可证明您在 Spring Framework 方面的专业知识&#xff0c;Spring Framework 是构建企业级 Java 应用程序的领先平台。此认证在全球范围内得到认可&#xff0c;并证明您在 Spring 的各个方面都具有熟练程度&#xff0c;…

Spring Bean 无法被扫描到的问题

问题复现 ● 使用如下包结构&#xff1a; ● 我们发现 HelloWorldController 失效了&#xff0c;无法找到 HelloWorldController 这个 Bean 了。这是为何&#xff1f; 案例分析 ● 对于 Spring Boot 而言&#xff0c;关键点在于 Application.java 中使用了 SpringBootAppli…

Linux umami网站统计工具自定义API开发

Linux umami网站统计工具自定义API开发 一、src/queries/analytics/下添加调用sql查询文件&#xff1a;二、src/queries/index.js文件中增加导出模块内容&#xff1a;三、src/pages/api/下根据目录添加接口方法文件&#xff1a;四、构建项目&#xff0c;启动。1、到umami目录&a…

libvirt学习

文章目录 libvirt 简介节点、Hypervisor和域libvirt 安装和配置libvirt的XML配置文件libvirt APIMain libvirt APIsError handlingSpecial specific APIs 建立到Hypervisor的连接libvirt API使用编译libvirt工具virshvirt-clonevirt-dfvirt-imagevirt-installvirt-topvirt-what…

自动化测试工具Ranorex Studio(七十八)-故障排除

故障排除 如果你有连接问题&#xff0c;请考虑以下潜在的问题来源&#xff1a; • 请确保被测系统&#xff08;移动设备&#xff09;和运行测试的机器&#xff08;安装Ranorex的&#xff09;是在同一网络中的。 设备上的Wi-Fi设置更改后&#xff0c;请务必重新启动设备。 •…

常用的linux命令介绍

Linux是一个强大的操作系统&#xff0c;它提供了许多命令行工具来帮助用户管理文件和目录、监控系统性能、以及执行各种系统管理任务。下面是一些常用的Linux命令&#xff0c;我会用简单的语言来解释它们的作用&#xff1a; 1. ls • 作用&#xff1a;列出目录内容。 • 比喻&a…

万里数据库GreatSQL监控解析

GreatSQL是MySQL的一个分支&#xff0c;专注于提升MGR&#xff08;MySQL Group Replication&#xff09;的可靠性及性能。乐维监控平台可以有效地监控GreatSQL&#xff0c;帮助用户及时发现并解决潜在的性能问题。 通过在GreatSQL服务器上安装监控代理&#xff0c;收集数据库性…

缓存管理自动化:JuiceFS 企业版 Cache Group Operator 新特性发布

近期&#xff0c;JuiceFS 企业版推出了 Cache Group Operator&#xff0c;用于自动化创建和管理缓存组集群。Operator 是一种简化 Kubernetes 应用管理的工具&#xff0c;它能够自动化应用程序的生命周期管理任务&#xff0c;使部署、扩展和运维更加高效。 在推出 Operator 之前…

Wireshark和科来网络分析系统

Wireshark 是一款功能强大的网络协议分析工具&#xff0c;主要用于捕获和分析网络流量&#xff0c;帮助用户排查网络问题、进行安全分析和学习网络协议。以下是 Wireshark 的基础使用指南&#xff1a; 1. 安装 Wireshark 访问 Wireshark 官网 下载并安装适合你操作系统的版本…

无穿戴动作捕捉系统技术解密及多元化运用

在当今科技飞速发展的时代&#xff0c;动作捕捉技术不断革新&#xff0c;无穿戴动作捕捉系统崭露头角。与传统粘贴标记点的动作捕捉技术相比&#xff0c;无标记点动作捕捉技术具有显著优势。它能够在确保高精度捕捉的前提下&#xff0c;以非接触的方式极大地提升被捕捉对象的表…