831. 隐藏个人信息

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

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

电子邮箱

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

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

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

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

电话号码

电话号码是一串包括数字 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。

class Solution {

public String maskPII(String S) {

return (S.indexOf("@")!=-1)?maskEmail(S):maskPhone(S.toCharArray());

}

public String maskEmail(String s){

StringBuilder sb = new StringBuilder();

int index = s.indexOf("@");

sb.append(s.charAt(0)).append("*****").append(s.charAt(index-1)).append(s.substring(index));

return sb.toString().toLowerCase();

}

public String maskPhone(char[] chs){

int cnt = 0;

StringBuilder sb = new StringBuilder();

for(int i=chs.length-1;i>=0;i--){

char ch = chs[i];

if(Character.isDigit(ch)){

if(cnt == 4 || cnt == 7 || cnt == 10)

sb.append("-");

if (cnt < 4)

sb.append(ch);

else

sb.append("*");

cnt++;

}

}

if(cnt>10){

sb.append('+');

}

return sb.reverse().toString();

}

}

图像信息隐藏算法JAVA_Java实现 LeetCode 831 隐藏个人信息(暴力)相关推荐

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

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

  2. matlab信息隐藏算法,实验四--基于DCT域的信息隐藏算法

    <实验四--基于DCT域的信息隐藏算法>由会员分享,可在线阅读,更多相关<实验四--基于DCT域的信息隐藏算法(6页珍藏版)>请在人人文库网上搜索. 1.实验四 基于DCT域的 ...

  3. LeetCode 831. 隐藏个人信息

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

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

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

  5. LSB图像信息隐藏算法matlab,实验二LSB信息隐藏实验.doc

    实验二LSB信息隐藏实验.doc 实验二LSB信息隐藏实验 综合评分: [实验目的]: 掌握MATLAB基木操作 实现LSB信息隐藏和提取 [实验内容]:(请将你实验完成的项11涂"■&qu ...

  6. 独家 | 将人们困于贫穷之中的隐藏算法战争即将到来

    作者:Karen Hao 翻译:陈超 校对:Kay 本文长度为4400字,建议阅读10+分钟 本文将介绍由于自动化算法的广泛应用在日常信用积分领域带来的一系列法律及现实问题. 越来越多的律师在揭露.引 ...

  7. JSteg信息隐藏算法

    目录 实验环境 系统设计 JSteg信息隐藏算法 JSteg信息隐藏算法替换规则 嵌入算法 提取算法 JSteg信息隐藏算法缺陷分析 系统实现 嵌入算法 JSTEG_simulation.m steg ...

  8. 图片嵌入隐藏-大容量的信息隐藏算法

    今天分享一下最近看到的一个图片嵌入隐藏的算法. 这是一种基于空间域的自适应多平面位的信息隐藏算法.该算法计算复杂度低.信息隐藏量大.且有实验表明在不影响图像视觉效果的前提下,其信息隐藏量比LSB算法大 ...

  9. 【算法面试】leetcode最常见的150道前端面试题 --- 中等题

    点击上方 前端瓶子君,关注公众号 回复算法,加入前端编程面试算法每日一题群 兄弟姐妹们,中等题来了,本篇17道,剩下63道,每周更新10道! 之前简单题的链接如下: [算法面试]leetcode最常见 ...

最新文章

  1. 美国 AI 博士一针见血:Python 这样学最容易成为高手!
  2. Linux之时钟中断
  3. python控制电脑关机_Python利用智能音箱语音控制电脑开关机
  4. Kickstart之添加自动化脚本
  5. saltstack php,Saltstack快速入门简单汇总
  6. 基于序贯重要性重采样的粒子滤波and(RBPF)
  7. win32开发(创建子窗口)
  8. hadoop2.6.2分布式环境搭建
  9. 开工利是!循序渐进~
  10. LINUX下载编译redis
  11. 私有云的Eucalyptus简介
  12. 陕西2020行政区划调整_陕西行政区划调整畅想:西安咸阳合并可行,但成立直辖市不太现实...
  13. oracle golden gate 价格,Oracle GoldenGate
  14. BZOJ2748: [HAOI2012]音量调节
  15. QT 多显示屏获取屏幕分辨率
  16. 《上瘾:让用户养成使用习惯的四大产品逻辑》读书笔记摘录
  17. 硕士阶段总结《科苑行》之工作习惯
  18. php artisan code,源码解读 Laravel PHP artisan config:cache
  19. 【LeetCode 二分查找专项】最长递增子序列(300)(to be polished...)
  20. ubuntu20.04 基本配置记录 安装 搜狗输入法 QQ 微信

热门文章

  1. Word中公式后面添加编号后,公式字体变小
  2. CSDN-markdown 首行缩进的快捷实现: 全角空格配合emsp;
  3. iOS App冷启动治理:来自美团外卖的实践
  4. calico官网网络拓扑实现:基于eNSP与VMVare
  5. pandas9_高级处理_交叉表和透视表
  6. 全网最详细笔记:张益唐北大讲解火热出炉!证明「零点猜想」!
  7. 多线程断点续传后台下载(首发于安卓巴士)
  8. 【Vapor】安装了一天,终于自动好了 Q_Q
  9. 大型时装企业如何应用RPA处理客户订单?
  10. VIM的一些自己的使用tips(5年前整理的,看到后热泪盈眶)