算法二

垃圾邮件检查

小明被垃圾邮件所困扰,遂决定构造自己的垃圾邮件过滤器:

  • 通过遍历邮件的每一行文字,来判断该行为good还是bad
  • bad行越多,该邮件越有可能是垃圾邮件
  • good行使用“o”来标记,bad行使用“x”来标记
  • 所有的标记放到judgeLog字符串中
    • 例如judgeLog=”oxooo”代表邮件有5行,其中第二行是bad
  • 小明给出了伪代码实现
// 设置该邮件的score为0
// 对该邮件的每一行进行遍历
//      如果该行为good,将score加上G
//      如果改行为bad,将score减去B
//      如果score为负
//          返回该邮件为垃圾邮件("SPAM")
// 如果score永远不是负数
//      返回该邮件为正常邮件("NOT SPAM")

伪代码中G、B为正整数,分别代表good,bad的权重值(由用户自定义)


输入

  • 行标记字符串(string):judgeLog
  • good行权重(int):good
  • bad行权重(int):bad

输出

  • 是否为垃圾邮件(string):SPAM / NOT SPAM

思路

遍历judgeLog,求取score的值,当score为负数时及时返回

代码实现

#include <iostream>
#include <string>

using namespace std;

class SpamChecker
{
public:
    static string spamcheck(string judgeLog, int good, int bad)
    {
        int sum=0;
        for(int i=0; i<judgeLog.length(); i++)
        {
            if('o' == judgeLog[i])
                sum += good;
            else
            {
                sum -= bad;
                if(sum<0)
                    return "NOT SPAM";
            }
        }
        return "SPAM";
    };
};

int main()
{
    string judgeLog;
    int good, bad;
    cout << "set judgeLog:"<<endl;
    cin >> judgeLog;
    cout << "set good:" << endl;
    cin >> good;
    cout << "set bad:" << endl;
    cin >> bad;
    string resultSpam = SpamChecker::spamcheck(judgeLog,good,bad);
    cout << resultSpam;
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值