题目描述:
给你一条个人信息 string S,它可能是一个邮箱地址,也可能是一个电话号码。

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

1. 电子邮箱

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

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

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

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

2. 电话号码

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

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

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

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

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

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

示例 1:

输入: “LeetCode@LeetCode.com”
输出: “le@leetcode.com"
解释:
所有的名称转换成小写, 第一个名称的第一个字符和最后一个字符中间由 5 个星号代替。
因此,“leetcode” -> "l
e”。
示例 2:

输入: “AB@qq.com”
输出: “ab@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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

分类讨论即可,没有技术含量

class Solution {public String maskPII(String S) {//        邮箱格式if (S.contains("@")) {String[] split = S.toLowerCase().split("@");StringBuilder sb = new StringBuilder();sb.append(split[0].charAt(0) + "*****" + split[0].charAt(split[0].length() - 1)).append("@" + split[1]);return sb.toString();
//            电话形式} else {int getnum = getnum(S);String getlastfour = getlast(S);String tem = "***-***-" + getlastfour;if (getnum == 10) {return tem;} else {StringBuilder sb = new StringBuilder();sb.append("+");for (int i = 0; i < getnum - 10; i++) {sb.append("*");}sb.append("-" + tem);return sb.toString();}}}public int getnum(String S) {int result = 0;for (int i = 0; i < S.length(); i++) {if (Character.isDigit(S.charAt(i))) {result++;}}return result;}public String getlast(String S) {StringBuilder s = new StringBuilder();for (int i = S.length() - 1; i >= 0; i--) {if (Character.isDigit(S.charAt(i))) {s.append(S.charAt(i));}if (s.length() == 4) {break;}}return s.reverse().toString();}
}

273、隐藏个人信息相关推荐

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

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

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

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

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

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

  4. 微信 发送图片 服务器上,公安提醒:微信发照片,千万别传原图”!5个步骤教你隐藏位置信息...

    原标题:公安提醒:微信发照片,千万别传"原图"!5个步骤教你隐藏位置信息 你与陌生人之间,可能只是一张照片的距离.有时候一张"原图"照片,分分钟就暴露了你的信息 ...

  5. Cesium隐藏版权信息

    Cesium隐藏版权信息 CesiumWidget.css中: .cesium-widget-credits{ display:none}: Viewer.css中: .cesium-viewer . ...

  6. Apache实现盗链与防盗链与隐藏版本信息

    文章目录 一:盗链实操步骤 1.2:win 10 测试dns解析 1.3:首先需要手工编译安装Apache 1.4:make编译安装make install 1.5:编辑配置文件 1.6:客户机测试正 ...

  7. 文件隐藏服务器版本信息,隐藏版本信息

    隐藏版本信息 内容精选 换一换 PG_EXTENSION_DATA_SOURCE系统表存储外部数据源对象的信息.一个外部数据源对象(Data Source)包含了外部数据库的一些口令编码等信息,主要配 ...

  8. 手把手教你,嘴对嘴传达------Apache(安全优化防盗链、隐藏版本信息)

    文章目录 一.配置防盗链 1.防盗链概述 2.盗链模拟步骤 3.检查Apache是否安装了mod_rewrite模块 4.配置规则变量说明 5.规则匹配说明 6.配置操作演示 二.防盗链实操 1.环境 ...

  9. web安全——隐藏版本信息

    以命令curl -I www.google.com 查看结果如何: HTTP/1.1 302 Found Cache-Control: private Location: http://sorry.g ...

  10. CTF 隐藏的信息 intoU base64÷4 ...

    每天进步一点点. 文章目录 一.隐藏的信息 二.intoU 三.base64÷4 四.misc_pic_again 一.隐藏的信息 难度系数: ★★★ 题目来源: 2019_ISCC 题目描述: 这是 ...

最新文章

  1. AI竟然可以预测性取向,女装大佬在算法面前不堪一击!
  2. 金立M2017续航出色不仅是因为电池大,还有超强快充
  3. sklearn自学指南(part32)--保序回归
  4. 连接mysql数据库_解决Navicat连接MySQL数据库报错问题
  5. MySQL 正则表达式查询
  6. CSS/CSS3常用样式与web移动端资源
  7. LIRE的使用:搜索相似的图片
  8. 大数据分析的重要性体现在哪里
  9. Flash的破解版按装
  10. SuperMap 三维模型数据制作
  11. Unity3D 手机竖屏设置(For Android)
  12. Ubuntu安装过程之磁盘分区图文教程
  13. 百度搜索引擎算法大全
  14. Ubuntu20.04的一些功能设置记录(持续更新)
  15. 打印机定影膜引起的诡异故障
  16. yolov4-tiny使用jetson nano进行目标检测+tensorrt+CSI+USB摄像头检测
  17. 宏基因组测序流程(不完全版)
  18. 【计算机网络】数据链路层:使用广播信道的以太网(1)
  19. 抖音视频突然播放量少了很多,抖音限流怎么查看?
  20. 重t2加权是什么意思_LOL:每周半价恢复,幸好有一款T2等级皮肤撑场面

热门文章

  1. 英文科技论文的撰写方法
  2. Linux 挂载磁盘报错 mount: unknown filesystem type ‘LVM2_member‘
  3. Steam编程区解谜游戏A=B全解(一)
  4. 怎么将虚拟机成服务器,如何将虚拟机变成云服务器
  5. Android studio教程与问题汇总
  6. Win7下安装iMac系统
  7. java读取ppm图片_用C读取PPM文件(只有P6格式没有注释)并另存为图像
  8. Markdown画有关的树形图参考
  9. 雪花算法原理_孙略 | 雪花工场
  10. 如何下载有道精品课课程回放(无水印)