问题背景
给你一个字符串
d
a
t
e
date
date,它的格式为
y
y
y
y
−
m
m
−
d
d
yyyy-mm-dd
yyyy−mm−dd,表示一个公历日期。
d
a
t
e
date
date 可以重写为二进制表示,只需要将年、月、日分别转换为对应的二进制表示(不带前导零)并遵循
y
e
a
r
−
m
o
n
t
h
−
d
a
y
year-month-day
year−month−day 的格式。
返回
d
a
t
e
date
date 的 二进制 表示。
数据约束
- d a t e . l e n g t h = 10 date.length = 10 date.length=10
- 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 1900 1900 年 1 1 1 月 1 1 1 日到 2100 2100 2100 年 12 12 12 月 31 31 31 日(包括这两天)。
解题过程
Java 库中提供了将十进制数字转化为二进制的方法,直接调用即可。
值得注意的是,这题的背景下没必要写循环,截三次字符串效率更高,也很符合约定输入并提供所要求输出的设计原则。
具体实现
class Solution {
public String convertDateToBinary(String date) {
StringBuilder res = new StringBuilder();
res.append(Integer.toBinaryString(Integer.parseInt(date.substring(0,4))));
res.append("-");
res.append(Integer.toBinaryString(Integer.parseInt(date.substring(5,7))));
res.append("-");
res.append(Integer.toBinaryString(Integer.parseInt(date.substring(8,10))));
return res.toString();
}
}