comments | difficulty | edit_url | rating | source | tags | ||
---|---|---|---|---|---|---|---|
true |
Easy |
1205 |
Weekly Contest 414 Q1 |
|
You are given a string date
representing a Gregorian calendar date in the yyyy-mm-dd
format.
date
can be written in its binary representation obtained by converting year, month, and day to their binary representations without any leading zeroes and writing them down in year-month-day
format.
Return the binary representation of date
.
Example 1:
Input: date = "2080-02-29"
Output: "100000100000-10-11101"
Explanation:
100000100000, 10, and 11101 are the binary representations of 2080, 02, and 29 respectively.
Example 2:
Input: date = "1900-01-01"
Output: "11101101100-1-1"
Explanation:
11101101100, 1, and 1 are the binary representations of 1900, 1, and 1 respectively.
Constraints:
date.length == 10
date[4] == date[7] == '-'
, and all otherdate[i]
's are digits.- The input is generated such that
date
represents a valid Gregorian calendar date between Jan 1st, 1900 and Dec 31st, 2100 (both inclusive).
We first split the string -
, then convert each part to its binary representation, and finally join these three parts with -
.
The time complexity is
class Solution:
def convertDateToBinary(self, date: str) -> str:
return "-".join(f"{int(s):b}" for s in date.split("-"))
class Solution {
public String convertDateToBinary(String date) {
List<String> ans = new ArrayList<>();
for (var s : date.split("-")) {
int x = Integer.parseInt(s);
ans.add(Integer.toBinaryString(x));
}
return String.join("-", ans);
}
}
class Solution {
public:
string convertDateToBinary(string date) {
auto bin = [](string s) -> string {
string t = bitset<32>(stoi(s)).to_string();
return t.substr(t.find('1'));
};
return bin(date.substr(0, 4)) + "-" + bin(date.substr(5, 2)) + "-" + bin(date.substr(8, 2));
}
};
func convertDateToBinary(date string) string {
ans := []string{}
for _, s := range strings.Split(date, "-") {
x, _ := strconv.Atoi(s)
ans = append(ans, strconv.FormatUint(uint64(x), 2))
}
return strings.Join(ans, "-")
}
function convertDateToBinary(date: string): string {
return date
.split('-')
.map(s => (+s).toString(2))
.join('-');
}