1. 题目

给你一条个人信息字符串 S,它可能是一个 邮箱地址 ,也可能是一串 电话号码 。

我们将隐藏它的隐私信息,通过如下规则:

  1. 电子邮箱

定义名称 name 是长度大于等于 2 (length ≥ 2),并且只包含小写字母 a-z 和大写字母 A-Z 的字符串。

电子邮箱地址由名称 name 开头,紧接着是符号 ‘@’,后面接着一个名称 name,再接着一个点号 ‘.’,然后是一个名称 name。

电子邮箱地址确定为有效的,并且格式是 “name1@name2.name3”。

为了隐藏电子邮箱,所有的名称 name 必须被转换成小写的,并且第一个名称 name 的第一个字母和最后一个字母的中间的所有字母由 5 个 ‘*’ 代替。

  1. 电话号码

电话号码是一串包括数字 0-9,以及 {'+', '-', '(', ')', ' '} 这几个字符的字符串。你可以假设电话号码包含 10 到 13 个数字。

电话号码的最后 10 个数字组成本地号码,在这之前的数字组成国际号码。注意,国际号码是可选的。我们只暴露最后 4 个数字并隐藏所有其他数字。

本地号码是有格式的,并且如 "***-***-1111" 这样显示,这里的 1 表示暴露的数字。

为了隐藏有国际号码的电话号码,像 "+111 111 111 1111",我们以 "+***-***-***-1111" 的格式来显示。在本地号码前面的 '+' 号和第一个 '-' 号仅当电话号码中包含国际号码时存在。例如,一个 12 位的电话号码应当以 "+**-" 开头进行显示。

注意:像 "(",")"," " 这样的不相干的字符以及不符合上述格式的额外的减号或者加号都应当被删除。

最后,将提供的信息正确隐藏后返回。

示例 1:
输入: "LeetCode@LeetCode.com"
输出: "l*****e@leetcode.com"
解释:
所有的名称转换成小写, 第一个名称的第一个字符和最后一个字符中间由 5 个星号代替。
因此,"leetcode" -> "l*****e"。示例 2:
输入: "AB@qq.com"
输出: "a*****b@qq.com"
解释:
第一个名称"ab"的第一个字符和最后一个字符的中间必须有 5 个星号
因此,"ab" -> "a*****b"。示例 3:
输入: "1(234)567-890"
输出: "***-***-7890"
解释:
10 个数字的电话号码,那意味着所有的数字都是本地号码。示例 4:
输入: "86-(10)12345678"
输出: "+**-***-***-5678"
解释:
12 位数字,2 个数字是国际号码另外 10 个数字是本地号码 。注意:
S.length <= 40。
邮箱的长度至少是 8。
电话号码的长度至少是 10。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/masking-personal-information
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 通过@判断是邮箱还是电话
  • 电话的话对数字个数计数
class Solution { //C++
public:string maskPII(string S) {int at = S.find("@");string ans;if(at != string::npos){if(isupper(S[0]))ans = string(1,S[0]+32)+"*****";elseans = string(1,S[0])+"*****";for(int i = at-1; i < S.size(); ++i){if(isupper(S[i]))S[i] += 32;ans += S[i];}}else{int count = 0;string last4;for(int i = S.size()-1; i >= 0; --i){if(isdigit(S[i])){count++;if(last4.size()<4)last4 = S[i]+last4;}}if(count<=10)ans = "***-***-"+last4;elseans = "+"+string(count-10,'*')+"-***-***-"+last4;}return ans;}
};

0 ms 6.1 MB

class Solution:# py3def maskPII(self, S: str) -> str:at = '@' in Sans = ""if at:if S[0].isupper():ans = S[0].lower()+"*****"else:ans = S[0]+"*****"idx = S.index('@')for i in range(idx-1, len(S)):if S[i].isupper():ans += S[i].lower()else:ans += S[i]else:count = 0last4 = ""for i in range(len(S)-1,-1,-1):if S[i].isdigit():count += 1if len(last4)<4:last4 = S[i]+last4if count==10:ans = "***-***-"+last4else:ans = "+"+'*'*(count-10)+"-***-***-"+last4return ans

52 ms 13.6 MB


关注我的公众号,一起加油、一起学习进步!

LeetCode 831. 隐藏个人信息相关推荐

  1. 图像信息隐藏算法JAVA_Java实现 LeetCode 831 隐藏个人信息(暴力)

    831. 隐藏个人信息 给你一条个人信息字符串 S,它可能是一个 邮箱地址 ,也可能是一串 电话号码 . 我们将隐藏它的隐私信息,通过如下规则: 电子邮箱 定义名称 name 是长度大于等于 2 (l ...

  2. Java实现 LeetCode 831 隐藏个人信息(暴力)

    831. 隐藏个人信息 给你一条个人信息字符串 S,它可能是一个 邮箱地址 ,也可能是一串 电话号码 . 我们将隐藏它的隐私信息,通过如下规则: 电子邮箱 定义名称 name 是长度大于等于 2 (l ...

  3. [leetcode]831. 隐藏个人信息

    坑还很多.. class Solution {public:string maskPII(string S) {if(S.size() == 0) return "";string ...

  4. 831 隐藏个人信息

    题目描述: 给你一条个人信息字符串 S,它可能是一个 邮箱地址 ,也可能是一串 电话号码 . 我们将隐藏它的隐私信息,通过如下规则: 电子邮箱 定义名称 name 是长度大于等于 2 (length ...

  5. 831. 隐藏个人信息

    给你一条个人信息 string S,它可能是一个邮箱地址,也可能是一个电话号码. 我们将隐藏它的隐私信息,通过如下规则: <u>1. 电子邮箱</u> 定义名称 <nam ...

  6. LeetCode 831. Masking Personal Information【字符串,正则表达式】中等

    本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12.由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止:由于LeetCode还在不断地创建新 ...

  7. Nginx隐藏主机信息,proxy_hide_header 与fastcgi_hide_header

    Nginx中proxy_hide_header 与fastcgi_hide_header都可以隐藏主机头信息,两者在具体使用时还是有着一定的区别的.刚好业务使用的nginx反向代理在显示响应头时将后端 ...

  8. linux隐藏apache信息,Apache防盗链和隐藏版本信息-linux-centos运维

    有需要服务器方面的需求和咨询,可以联系博主 QQ 7271895 一.防盗链 二.隐藏版本信息 实验要求: 三台虚拟机分别是:linux和两台windows虚拟机,linux虚拟机为服务器,Windo ...

  9. apache php隐藏头信息的方法,apache、php隐藏http头部版本信息的实现方法

    1.apache隐藏头部版本信息,编辑httpd.conf文件,找到: ServerTokens OS ServerSignature On 修改为: ServerTokens ProductOnly ...

最新文章

  1. CCNA 2 chapter
  2. 北大百年讲堂创新大会小游记
  3. leetcode584. 寻找用户推荐人(SQL)
  4. 【Maven】Maven下载源码和Javadoc的方法
  5. P2P 网络核心技术:Gossip 协议
  6. R_circlize包_和弦图(一)
  7. 继电保护原理7-母线保护
  8. EZEMC测试软件_AR EMC测试软件EMCWARE
  9. PS2019 常用快捷键大全
  10. 用python实现12306登录、查票(小白都一看就懂的)
  11. 爬取某视频网站电影,仅参考学习
  12. ios 中字符串怎么换行
  13. 【转载】定位系统中的多径效应
  14. 生产制造业ERP系统模块
  15. 采访 Paradigm合伙人 :Crypto将是席卷 世界 的强大 浪潮
  16. Linux extmail的邮件服务器搭建
  17. 云服务器的ip地址打不开如何解决?
  18. 2021东南亚新兴平台Lazada开店入驻最全流程Lazada新店运营思路分享
  19. 常用CAD快捷键命令大全
  20. 语音质量指标Python(PESQ、STOI、SegSNR、LLR、WSS、CD、LSD、CSIG、CBAK、COVL)

热门文章

  1. 解决:pycharm运行程序时在Python console窗口中运行 һ����ң�������1�����
  2. pycharm 快捷键大全
  3. 机器学习之LDA主题模型算法
  4. 关于eclipse项目红色感叹号的解决办法
  5. mysql 停止服务内存_服务器莫名的内存高占用 导致 MySQL 停止运行问题
  6. mysql修改校对集_MySQL 图文详细教程之校对集问题
  7. [转]Angular2 Material2 封装组件 —— confirmDialog确定框
  8. 【BZOJ1880】[Sdoi2009]Elaxia的路线 最短路+DP
  9. python--socket套接字/TCP
  10. 高效开发--crm开发有悟