leetcode 831练习(c++)

leetcode原题
将字符串转化为小写,可以使用transform函数 需要包含algorithm头文件

transform(S.begin(), S.end(), S.begin(), ::tolower);  //将S都转为小写
transform(S.begin(), S.end(), S.begin(), ::toupper);  //将S都转为大写

在字符串中查找字符,可以利用string自带的find函数

if(S.find('@')!= string::npos) //find函数如果成功找到的返回值为::npos
...

答案代码:

#include <regex> // regex_replace
#include <algorithm> // transform
 
class Solution {
private:
    string prefix[4] = {"", "+*-", "+**-", "+***-"};
public: 
    string maskPII(string S) {
        int at = S.find('@'); // 用来判断是不是邮箱
        if(at != string::npos) {
            transform(S.begin(), S.end(), S.begin(), ::tolower);
            S.replace(1, at-2, "*****"); 
        }
        else {
            S = regex_replace(S, regex("[^0-9]"), "");//  过滤非数字
            int n = S.length();
            S = prefix[n-10] + "***-***-" + S.substr(n-4);
        }
        return S;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值