【拒绝算法PUA】 3280.将日期转换为二进制表示

系列文章目录

【拒绝算法PUA】0x00-位运算
【拒绝算法PUA】0x01- 区间比较技巧
【拒绝算法PUA】0x02- 区间合并技巧
【拒绝算法PUA】0x03 - LeetCode 排序类型刷题
【拒绝算法PUA】LeetCode每日一题系列刷题汇总-2025年持续刷新中

C++刷题技巧总结:
[温习C/C++]0x04 刷题基础编码技巧



LeetCode 3280. 将日期转换为二进制表示

链接

3280. 将日期转换为二进制表示

题目

给你一个字符串 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 日(包括这两天)。

解题方法1

#include <iostream>
#include <string>
#include <sstream>
#include <bitset>

using namespace std;

class Solution {
public:
    string convertDateToBinary(string date) {
        string res;
        string val;
        const char delim = '-';
        std::stringstream ss(date);
        for (string num; getline(ss, num, delim);) {
            int n = std::stoi(num);
            string bit_str = std::bitset<16>(n).to_string();
            string trim_val = trim0(bit_str);
            res.append(trim_val).append("-");
        }
        res.erase(res.size() - 1);
        return res;
    }

    string trim0(std::string& bitStr) {
        string trimStr;
        bool firstNonZero = false;
        for (char cc : bitStr) {
            if (cc != '0' && !firstNonZero) {
                firstNonZero = true;
                trimStr.push_back(cc);
                continue;
            }
            if (firstNonZero) {
                trimStr.push_back(cc);
            }
        }
        return trimStr;
    }
};

int main(int argc, char **argv) {
    Solution obj;
    string date1 = "2080-02-29";
    string res1 = obj.convertDateToBinary(date1);
    cout << res1 << endl;
    return 0;
}

在这里插入图片描述

解题方法2

#include <iostream>
#include <string>
#include <sstream>
#include <bitset>

using namespace std;

class Solution {
public:
    string convertDateToBinary(string date) {
        string res;
        auto bin = [](int x) -> string {
            string bits = bitset<16>(x).to_string();
            int idx = bits.find("1");
            return bits.substr(idx);
        };

        string year = bin(std::stoi(date.substr(0, 4)));
        string month = bin(std::stoi(date.substr(5, 2)));
        string day = bin(std::stoi(date.substr(8, 2)));

        res.append(year).append("-").append(month).append("-").append(day);
        return res;
    }
};

int main(int argc, char **argv) {
    Solution obj;
    string date1 = "2080-02-29";
    string res1 = obj.convertDateToBinary(date1);
    cout << res1 << endl;
    return 0;
}

在这里插入图片描述

### 关于 PUA.MPE.BURDEN.A 的病毒类型、定义及特征 PUA.MPE.BURDEN.A 是一种潜在不需要的应用程序(Potentially Unwanted Application, 简称 PUA),通常与恶意软件或广告软件相关联。以下是关于该类型的详细描述: #### 类型 PUA.MPE.BURDEN.A 被分类为 **潜在不必要的应用程序**,这意味着它可能不会直接破坏系统功能,但会对用户体验造成负面影响[^4]。 #### 定义 此类病毒主要通过捆绑安装或其他隐蔽方式进入用户的计算机系统。它们可能会收集用户数据、显示侵入性广告或将流量重定向到不可信网站,从而影响设备性能和隐私安全[^5]。 #### 特征 1. **隐秘安装**: 用户往往在不知情的情况下下载并安装这些程序,通常是由于未仔细阅读软件许可协议中的附加组件说明。 2. **资源消耗高**: 运行时占用大量 CPU 和内存资源,可能导致系统变慢甚至崩溃。 3. **弹窗广告频繁**: 显示大量的商业推广信息干扰正常操作体验。 4. **跟踪活动**: 可能记录浏览习惯和其他个人行为用于精准营销目的;某些情况下还涉及更深层次的数据窃取行为违反隐私权规定[^6]。 对于防范措施方面建议定期更新防病毒软件数据库保持最新状态以便及时检测清除威胁源;同时谨慎对待来自未知发件人的邮件附件链接以及第三方应用商店外的产品下载请求以降低感染几率。 ```python import os from antivirus_api import scan_file def check_virus(file_path): result = scan_file(file_path) if 'PUA.MPE.BURDEN.A' in result['threats']: print(f"The file {file_path} is infected with PUA.MPE.BURDEN.A.") else: print(f"No threat detected in the file {file_path}.") # Example usage check_virus('/path/to/suspicious/file.exe') ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值