LeetCode 3280. 将日期转换为二进制表示
在这个问题中,我们需要将一个公历日期(格式为 yyyy-mm-dd
)转换为其二进制表示。具体来说,我们需要将年、月、日分别转换为二进制字符串,并按照 year-month-day
的格式组合这些字符串。
解题思路
-
提取年、月、日:从输入字符串
date
中提取年、月、日部分。 -
转换为整数:将提取的年、月、日字符串转换为整数。
-
转换为二进制字符串:将年、月、日整数转换为二进制字符串。
-
组合结果:将年、月、日的二进制字符串按照
year-month-day
的格式组合。
代码实现
#include <vector>
#include <string>
using namespace std;
class Solution {
public:
// 将字符串表示的数字转换为整数
int num(string str) {
int res = 0;
for (int i = 0; i < str.size(); i++) {
res = res * 10 + (str[i] - '0');
}
return res;
}
// 将十进制数转换为二进制字符串
string to_bin(int num) {
string res;
while (num > 0) {
res = char('0' + num % 2) + res;
num /= 2;
}
return res.empty() ? "0" : res;
}
// 主函数,将日期转换为二进制表示
string convertDateToBinary(string date) {
// 提取年、月、日
string y = date.substr(0, 4);
string m = date.substr(5, 2);
string d = date.substr(8, 2);
// 将年、月、日分别转换为整数
int ny = num(y);
int nm = num(m);
int nd = num(d);
// 将年、月、日分别转换为二进制字符串
string yBin = to_bin(ny);
string mBin = to_bin(nm);
string dBin = to_bin(nd);
// 组合成结果字符串
return yBin + "-" + mBin + "-" + dBin;
}
};
代码解释
-
num(string str)
:将字符串表示的数字转换为整数。 -
to_bin(int num)
:将十进制整数转换为二进制字符串。注意处理num
为0
的情况,返回"0"
。 -
convertDateToBinary(string date)
:主函数,将日期转换为二进制表示。提取年、月、日,转换为整数,再转换为二进制字符串,最后组合结果。
这个解决方案简洁明了,能够有效地将日期转换为二进制表示。