LeetCode.每日一题 831. 隐藏个人信息

简介: 这题的题目非常的长,但也有好处,一眼就看出来是模拟题。模拟题一般都不会很难,这里我们来看看具体是怎么做的。

Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法......感兴趣就关注我吧!你定不会失望。


🌈个人主页:主页链接


🌈算法专栏:专栏链接


    我会一直往里填充内容哒!


🌈LeetCode专栏:专栏链接


目前在刷初级算法的LeetBook 。若每日一题当中有力所能及的题目,也会当天做完发出


🌈代码仓库:Gitee链接


🌈点击关注=收获更多优质内容🌈


题目: 831. 隐藏个人信息


c89c6d37c4e9449cbe43fdf2da092b7d.png

b87af71a2b1146f39c8a163e30f2ff1b.png


题解:


这题的题目非常的长,但也有好处,一眼就看出来是模拟题。模拟题一般都不会很难,这里我们来看看具体是怎么做的。


先来分析下题目,大概有两种情况.


第一种是邮箱,相对来说比较简单


eef55585475e45da8e3afa9004477ae6.jpg


将所有字符转换成小写字母,之后再将第一个字符到域名前的两个字符转换成*****.即可


那么我们来看看如何判断这种情况呢?


邮箱中一定含有@这个符号,所以我们find一下就可以了,如果有则说明是邮箱.


(注意,若没有find到 则返回的是::nopos,据此来判断即可)

所以若为邮箱,我们先使用(transform函数)


其定义为


 transform(first.begin(),first.end(),second.begin(),op);


前两个参数为:检测范围,第三个参数为把转换后的结果存入的目标容器,最后一个参数为操作符


将所有字母转换为小写字母后,直接返回,第一个字符加上五个*,再加上@的前一个字符到最后即可.


return s.substr(0,1)+"*****"+s.substr(at-1);


注:substr的(src,length)含义为:从目标点开始选取length的字符

                 (src)从src到结尾的字符

第二种是电话号码,相对来说比较困难了


cefe759065e24a75a4c0fb190e3890be.jpg


第一步将所有的符号去掉,这里采用正则表达式的方法.

 s=regex_replace(s,regex("[^0-9]"),"");


regex_replace为正则表达式里的替换函数,需要包含<regex>头文件.

其三个参数为:src原地址,正则表达式,替换为.

所以这里的意思是将所有0-9数字以外的字符替换成 "",也就是删除,(^表示取反),之后存入s当中

 return country[s.size()-10]+"***-***-"+s.substr(s.size()-4);


因为题目规定了,手机号为10位,所以国家号的长度即为size-10

至此即可做完本题


(过几天我会更新一下c++用正则表达式的博客,可以关注下)


模拟题虽然没有很算法,但我觉得对于学习函数还是很有意义的!


代码实现:


class Solution {
    vector<string>country={"","+*-","+**-","+***-"};
public:
    string maskPII(string s) {
        string res;
       auto at= s.find("@");
       if(at != string::npos)
       {
        transform(s.begin(),s.end(),s.begin(),::tolower);
        return s.substr(0,1)+"*****"+s.substr(at-1);
       }
            s=regex_replace(s,regex("[^0-9]"),"");
            return country[s.size()-10]+"***-***-"+s.substr(s.size()-4);
    }
};


完结撒花:


🌈本篇博客的内容【LeetCode.每日一题 831. 隐藏个人信息】已经结束。

🌈若对你有些许帮助,可以点赞、关注、评论支持下博主,你的支持将是我前进路上最大的动力。


🌈若以上内容有任何问题,欢迎在评论区指出。若对以上内容有任何不解,都可私信评论询问。


🌈诸君,山顶见!

目录
相关文章
|
前端开发 UED
现代前端开发中的响应式设计与移动优先策略
随着移动设备的普及和多样化,现代前端开发越来越注重响应式设计和移动优先策略。本文将介绍响应式设计的概念、原则和实践,以及在移动优先策略下如何构建适配各种设备的前端界面。
|
编译器 C语言
成功解决“Run-Time Check Failure #2 - Stack around the variable ‘arr‘ was corrupted.“问题
成功解决“Run-Time Check Failure #2 - Stack around the variable ‘arr‘ was corrupted.“问题
733 1
|
12月前
|
监控 安全 物联网
在使用物联网卡过程中的一些限制
在使用物联网卡(IoT卡)的过程中,确实存在一些限制和注意事项,这些限制主要来源于技术、安全、法规以及服务提供商的政策等多个方面。以下是一些常见的限制及操作建议:
|
缓存 NoSQL 网络协议
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
345 1
|
9月前
|
存储 人工智能 安全
面向法律场景的大模型 RAG 检索增强解决方案
检索增强生成模型结合了信息检索与生成式人工智能的优点,从而在特定场景下提供更为精准和相关的答案。以人工智能平台 PAI 为例,为您介绍在云上使用一站式白盒化大模型应用开发平台 PAI-LangStudio 构建面向法律场景的大模型 RAG 检索增强解决方案,应用构建更简便,开发环境更直观。此外,PAI 平台同样发布了面向医疗、金融和教育领域的 RAG 解决方案。
|
12月前
|
关系型数据库 MySQL Java
MySQL数据锁:Record Lock,Gap Lock 和 Next-Key Lock
本文基于 MySQL 8.0.30 版本及 InnoDB 引擎,深入解析三种行锁机制:记录锁(Record Lock)、间隙锁(Gap Lock)和临键锁(Next-key Lock)。记录锁锁定索引记录,确保事务唯一修改;间隙锁锁定索引间的间隙,防止新记录插入;临键锁结合两者,锁定范围并记录自身,有效避免幻读现象。通过具体示例展示了不同锁的作用机制及其在并发控制中的应用。
1133 2
|
存储 缓存 算法
【Conan 入门教程】从零开始编写第一个自定义部署器
【Conan 入门教程】从零开始编写第一个自定义部署器
353 1
|
前端开发 JavaScript 开发者
(css样式穿透详解)::v-deep的使用
(css样式穿透详解)::v-deep的使用
1098 0
使用集合运算符
一、官方课件集合种类说明 二、注意事项 1、在SELECT列表中的列名和表达式在数量上必须匹配 2、第二个查询中的每一列的数据类型必须与第一个查询其对应的列的数据类型相匹配。 3、可以用括号来改变的执行顺序。
973 0