给你一个字符串 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 日(包括这两天)。
个人题解:
/**
* @param {string} date
* @return {string}
*/
var convertDateToBinary = function (date) {
const result= date.split('-').map(item => Number(item).toString(2)).join('-')
return result
};
官方题解:
方法一:模拟
首先将 date 按照 “yyyy-mm-dd” 的格式解析出年 year、月 month、日 day,然后将 year,month 和 day 的二进制表示字符串用 “-” 连接起来,返回结果。
function binary(x) {
let s = '';
while (x !== 0) {
s += (x & 1);
x >>= 1;
}
return s.split('').reverse().join('');
}
var convertDateToBinary = function(date) {
const year = parseInt(date.substring(0, 4), 10);
const month = parseInt(date.substring(5, 7), 10);
const day = parseInt(date.substring(8, 10), 10);
return binary(year) + "-" + binary(month) + "-" + binary(day);
};
作者:力扣官方题解
链接:https://leetcode.cn/problems/convert-date-to-binary/solutions/3030637/jiang-ri-qi-zhuan-huan-wei-er-jin-zhi-bi-nhll/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。