什么样建广告网站,淄博做网站seo,网络营销方式及特点,响应式单页网站模板文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目
题目链接#x1f517; 给你一个字符串 date#xff0c;它的格式为 yyyy-mm-dd#xff0c;表示一个公历日期。
date 可以重写为二进制表示#xff0c;只需要将年、月、日分别转换为对应的二进制表示 给你一个字符串 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 的二进制表示。 提示 d a t e . l e n g t h 10 date.length 10 date.length10 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] 都是数字。输入保证 d a t e date date 代表一个有效的公历日期日期范围从 1900 年 1 月 1 日到 2100 年 12 月 31 日包括这两天。
思路
要将日期字符串从格式 yyyy-mm-dd 转换为二进制表示的字符串可以按照以下步骤进行 解析日期字符串将输入的日期字符串拆分为年份、月份和日期的整数值。 转换为二进制字符串将上述整数值分别转换为对应的二进制字符串表示。 格式化输出按照 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)
结果 总结
通过解析日期字符串将年份、月份和日期分别转换为二进制字符串并按照指定格式组合最终实现了日期的二进制表示。由于涉及的数值范围有限算法的时间和空间复杂度均为常数级别效率较高