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

【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.lryc.cn/news/513608.html

相关文章:

  • Vue3 中自定义hook
  • 嵌入式系统 第七讲 ARM-Linux内核
  • 音视频入门基础:MPEG2-PS专题(2)——使用FFmpeg命令生成ps文件
  • Embedding
  • Android Studio学习笔记
  • Git的使用流程(详细教程)
  • Keil中的gcc
  • bilibili 哔哩哔哩小游戏SDK接入
  • springboot523基于Spring Boot的大学校园生活信息平台的设计与实现(论文+源码)_kaic
  • 【YOLO算法改进】ALSS-YOLO:无人机热红外图像|野生动物小目标检测
  • XML解析
  • PlasmidFinder:质粒复制子的鉴定和分型
  • PTA数据结构作业一
  • 2024年总结【第五年了】
  • java实现一个kmp算法
  • 强化学习方法分类详解
  • 雅思真题短语(二十八)
  • 在Linux系统中使用字符图案和VNC运行Qt Widgets程序
  • Python基于EasyOCR进行路灯控制箱图像文本识别项目实战
  • Github 2024-12-28 Rust开源项目日报 Top10
  • 提升生产力工具
  • 【蓝桥杯——物联网设计与开发】系列前言
  • 【Java基础】02.Java数据类型
  • Python爬虫(一)- Requests 安装与基本使用教程
  • 线段树保姆级教程
  • logback之自定义过滤器
  • 如何用CSS3创建圆角矩形并居中显示?
  • Java 开发中的指定外部 Jar 路径详解
  • python爬虫--小白篇【selenium自动爬取文件】
  • TI毫米波雷达原始数据解析之Lane数据交换