问题背景
给你一个字符串 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();}
}