[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 的二进制表示。
提示
date.length == 10
date[4] == date[7] == '-'
,其余的date[i]
都是数字。输入保证
date
代表一个有效的公历日期,日期范围从 1900 年 1 月 1 日到 2100 年 12 月 31 日(包括这两天)。
题解
思路解析
这道题的目标是将给定的日期字符串按照格式 yyyy-mm-dd
转换为二进制表示。具体步骤如下:
使用字符串分割方法将输入字符串按照
-
分隔,得到年、月、日三个部分。将年、月、日分别解析为整数,然后转换为对应的二进制表示。
拼接转换后的二进制字符串,使用
-
作为分隔符,最终形成结果。
题目本身逻辑简单,主要考察对字符串处理和基本数据类型转换的熟练程度。
代码实现
class Solution {
public String convertDateToBinary(String date) {
// 按 "-" 分割日期字符串
String[] str = date.split("-");
// 遍历数组,将每个部分转换为二进制
for (int i = 0; i < str.length; i++) {
str[i] = Integer.toBinaryString(Integer.parseInt(str[i]));
}
// 拼接转换后的二进制字符串
return String.join("-", str);
}
}
复杂度分析
时间复杂度:
输入字符串长度为n
,需要遍历一次字符串并分割为三部分,时间复杂度为 O(n)。转换每个部分为整数以及二进制表示所需时间为常数,因此整体复杂度为 O(n)空间复杂度:
需要存储分割后的数组和转换后的字符串,空间复杂度为 O(k),其中k
为分割后的子字符串长度和转换后的二进制长度
总结
本题主要考察字符串分割和数据转换的基本功,通过这个练习,我们复习了常见的字符串处理技巧和基本的算法设计思路
新的一年已经到来,希望大家在编程的道路上越走越远!愿在 2025 年,你能用代码点亮梦想,用算法书写辉煌!🎉
Happy New Year! 🎆
License:
CC BY 4.0