leetcode 831. Masking Personal Information 题解【C++/Java/Python】

不用SE63逐个翻译!ABAP函数LXE_OBJ_TEXT_PAIR_WRITE批量处理TCODE描述的3种姿势 本文介绍了三种利用ABAP函数LXE_OBJ_TEXT_PAIR_WRITE批量翻译SAP事务码(TCODE)描述的高效方案,旨在替代SE63逐个翻译的低效操作。内容涵盖从基础循环、Excel导入到全自动程序集成的实现方法,帮助开发者显著提升批量翻译效率,并深入解析了SAP翻译体系的核心原理与实战技巧。 阅读详情

831. 隐藏个人信息
831. Masking Personal Information

题目:

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

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

  1. 电子邮箱

定义名称name的长度大于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 位的电话号码应当以 "+**-" 开头进行显示。

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

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

题解:

用'@'符号来区分是邮箱还是电话。如果是邮箱,先将整个字符串按照题目要求转为小写,然后将邮箱的name1修改为形如"l*****e"的格式,即将第2位到倒数第2位转为掩码表示"*****"表示。

电话号码,先过滤掉非数字字符。电话号码的长度在10-13之间。依据长度,分别取前缀{"", "+*-", "+**-", "+***-"},然后追加"***-***-",最后加上电话号码的末尾4个数字。

C++
#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;
    }
};
Java
class Solution {
    private String prefix[] = {"", "+*-", "+**-", "+***-"}; // 电话的前缀
    public String maskPII(String S) {
        int at = S.indexOf('@');
        if(at != -1) {
            S = S.toLowerCase();
            S = S.substring(0, 1) + "*****" + S.substring(at-1);
        }
        else {
            S = S.replaceAll("[^0-9]", "");//去掉非数字字符
            int n = S.length();
            S = prefix[n-10] + "***-***-" + S.substring(n-4);
        }
        return S;
    }
}
Python
import re
class Solution(object):
    prefix = ["", "+*-", "+**-", "+***-"]
    def maskPII(self, S):
        """
        :type S: str
        :rtype: str
        """
        at = S.find('@') # 用以判断是否是邮箱
        if at != -1:
            S = S.lower()
            S = S[0] + "*****" + S[at-1:] 
        else:
            S = re.sub("[^0-9]", "", S) # 过滤非数字字符
            n = len(S)
            S = self.prefix[n-10] + "***-***-" + S[n-4:]
        return S
【异常】Cursor编辑器 “Taking longer than expected...“ 报错全链路排查与解决方案 该提示并非传统的程序崩溃或语法报错,本质是Cursor编辑器的超时预警机制——当核心任务(云端AI推理请求、本地项目索引等)的执行耗时超出系统预设阈值时,触发的用户告知类提示,核心诱因是任务执行全链路出现阻塞或性能瓶颈。以下方案按排查优先级从高到低排序,覆盖从快速急救到根因根治的全流程,可按步骤逐步验证解决。针对大仓库、多依赖项目的索引超时问题,核心是通过规则过滤无效文件,从根源降低索引负载。 阅读详情

相关推荐

FPGA以太网通信实战(一):实现MDIO接口驱动,掌控PHY芯片的钥匙

本文介绍了以太网通信技术及其核心组件。首先概述了以太网的发展历程,从标准以太网(10Mbps)到万兆以太网(10Gbps)的技术演进。重点分析了以太网接口的两大核心部件:MAC控制器负责数据链路层协议处理,PHY芯片负责物理信号转换和连接管理。文章详细解读了MDIO接口规范,包括帧格式和读写时序,并以YT8531 PHY芯片为例,介绍了其寄存器配置方法。最后设计了一个FPGA实现方案,通过MDIO接口完成PHY芯片的软复位和状态监测功能,并利用LED指示灯实时显示网络连接速率。

weixin_64402689的博客 1661

leetcode 831题解【C++/Java/Python】

831. 隐藏个人信息 831. Masking Personal Information 题目: 给你一条个人信息 string S,它可能是一个邮箱地址,也可能是一个电话号码。 我们将隐藏它的隐私信息,通过如下规则: 电子邮箱 定义名称name的长度大于2,并且只包含小写字母 a-z 和大写字母 A-Z。 电子邮箱地址由名称 name开头,紧接着是符号'@',后面接着一个名称 name,再...

weixin_34249678的博客 370

手把手教你用SIMCOM A7670C_FASL模组实现双路MQTT连接阿里云(附完整源码)

本文详细介绍了如何使用SIMCOM A7670C_FASL 4G模组实现双路MQTT连接阿里云,包括硬件配置、开发环境搭建、双路MQTT架构设计及实现细节。通过完整的源码示例和实战指南,帮助开发者快速掌握物联网设备开发中的多路MQTT连接技术,提升工业级应用的开发效率。

weixin_33696822的博客 227

Leetcode No.193 有效电话号码

一、题目描述 给定一个包含电话号码列表(一行一个电话号码)的文本文件 file.txt,写一个 bash 脚本输出所有有效的电话号码。 你可以假设一个有效的电话号码必须满足以下两种格式: (xxx) xxx-xxxx 或xxx-xxx-xxxx。(x 表示一个数字) 你也可以假设每行前后没有多余的空格字符。 示例: 假设file.txt内容如下: 987-123-4567 123 456 7890 (123) 456-7890 你的脚本应当输出下列有效的电话号码: 987-123-456...

952

零基础教程:用Python给试卷照片自动切题(有道OCR+PIL完整流程)

本文为零基础用户提供了一套完整的Python自动化切题方案。通过调用有道OCR API识别试卷照片中的题目坐标,并利用PIL库进行精准裁剪,将杂乱的试卷图片自动分割为独立的题目图像。教程详细涵盖了环境搭建、图像预处理、API调用、坐标解析与批量处理全流程,帮助教育工作者和技术爱好者高效处理大量试卷,实现工作流程自动化。

grpc6streamer的博客 1174

Cursor插件安装CodeX保姆级教程:从登录到调整面板布局,一步不落

本文提供Cursor编辑器安装CodeX插件的详细教程,涵盖从登录到调整面板布局的全流程。通过优化界面布局和配置参数,帮助开发者提升编码效率,特别适合需要智能代码补全的编程场景。

weixin_42648844的博客 4751

[leetcode]831. 隐藏个人信息

坑还很多。。 class Solution { public: string maskPII(string S) { if(S.size() == 0) return ""; string res=""; size_t index = S.find("@"); if(index != string::npos) ...

qq_40691051的博客 356

【系统架构设计师】预测试卷四:综合知识(75道选择题)

本文整理系统架构设计师考试高频考点,涵盖计算机系统基础、计算机网络、数据库、软件工程与UML四大模块,共28道典型题目。重点解析Cache局部性原理、RISC/CISC区别、TCP三次握手、B+树索引优势、CAP定理、螺旋模型特点等核心概念,并标注易错选项,帮助考生快速掌握解题思路。 关键词:系统架构、Cache、RISC、TCP、B+树、CAP定理、螺旋模型

数据知道的博客 544

leetcode 831.隐藏个人信息

class Solution { public: string work_email(string& t){ string s; for(auto c:t) s+=tolower(c); int a=s.find('@'),b=s.find('.'); string name1=s.substr(0,a); string name2=s.substr(a+1,b-a-1); string name

qq_45008831的博客 243

[deprecated]第九章:SVM机制: 9-2 Linux HMM原理与实现详解

Linux内核HMM(异构内存管理)子系统为异构计算平台提供统一内存管理机制,支持CPU与GPU等设备共享虚拟地址空间,实现零拷贝数据访问。其核心功能包括:1)统一虚拟地址空间,设备可直接访问CPU进程内存;2)实时页表同步与失效通知,确保地址空间一致性;3)支持设备端page fault处理;4)管理多种内存类型(系统内存、设备私有内存等)。HMM通过mmu_interval_notifier机制感知地址空间变化,提供标准API简化驱动开发,显著提升异构计算性能和数据传输效率。

图形/计算GPU的驱动与虚拟化技术分享园地 2543

全国青少年信息素养大赛图形化(Scratch)编程考点总结

全国青少年信息素养大赛图形化(Scratch)编程考点总结

伶俐角少儿编程 382

leetcode | go | 第831题 | 隐藏个人信息

【代码】leetcode | go | 第831题 | 隐藏个人信息。

iCling的博客 568

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

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

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

qq_62839589的博客 1081

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【算法题】831. 隐藏个人信息

给你一条个人信息字符串 s ,可能表示一个 邮箱地址 ,也可能表示一串 电话号码。返回按如下规则 隐藏 个人信息后的结果:电子邮件地址:一个电子邮件地址由以下部分组成:一个 名字 ,由大小写英文字母组成,后面跟着一个 ‘@’ 字符,后面跟着一个 域名 ,由大小写英文字母和一个位于中间的 ‘.’ 字符组成。‘.’ 不会是域名的第一个或者最后一个字符。要想隐藏电子邮件地址中的个人信息:名字 和 域名 部分的大写英文字母应当转换成小写英文字母。

kangbin825的专栏 1265

隐藏个人信息c++/c

给你一条个人信息字符串 s ,可能表示一个 邮箱地址 ,也可能表示一串 电话号码 。返回按如下规则 隐藏 个人信息后的结果: 电子邮件地址: 一个电子邮件地址由以下部分组成: 一个 名字 ,由大小写英文字母组成,后面跟着 一个 ‘@’ 字符,后面跟着 一个 域名 ,由大小写英文字母和一个位于中间的 ‘.’ 字符组成。’.’ 不会是域名的第一个或者最后一个字符。 要想隐藏电子邮件地址中的个人信息: 名字 和 域名 部分的大写英文字母应当转换成小写英文字母。 名字 中间的字母(即,除第一个和最后一个字母外)必.

Adyczb的博客 900

LeetCode 831. 隐藏个人信息

1. 题目 给你一条个人信息字符串 S,它可能是一个 邮箱地址 ,也可能是一串 电话号码 。 我们将隐藏它的隐私信息,通过如下规则: 电子邮箱 定义名称 name 是长度大于等于 2 (length ≥ 2),并且只包含小写字母 a-z 和大写字母 A-Z 的字符串。 电子邮箱地址由名称 name 开头,紧接着是符号 ‘@’,后面接着一个名称 name,再接着一个点号 ‘.’,然后是一个名称 name。 电子邮箱地址确定为有效的,并且格式是 “name1@name2.name3”。 为了隐藏电子邮箱,所

Michael是个半路程序员 1942

【Leetcode_总结】831. 隐藏个人信息 - python

Q: 给你一条个人信息 string S,它可能是一个邮箱地址,也可能是一个电话号码。 我们将隐藏它的隐私信息,通过如下规则: 1. 电子邮箱 定义名称 &lt;name&gt; 的长度大于2,并且只包含小写字母 a-z 和大写字母 A-Z。 电子邮箱地址由名称 &lt;name&gt; 开头,紧接着是符号 '@',后面接着一个名称 &lt;name&gt;,再接着一个点号 '.',然后...

maka_uir的博客 486

LeetCode 隐藏个人信息(字符串处理)

给你一条个人信息 string S,它可能是一个邮箱地址,也可能是一个电话号码。 我们将隐藏它的隐私信息,通过如下规则: 1. 电子邮箱 定义名称 <name> 是长度大于等于 2 (length ≥ 2),并且只包含小写字母 a-z 和大写字母 A-Z 的字符串。 电子邮箱地址由名称 <name> 开头,紧接着是符号 <font face="Menlo, Mona...

hestyle的博客 1359

【LeetCode】831. Masking Personal Information 解题报告(Python)

【LeetCode】831. Masking Personal Information 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.me/ 题目地址:https://leetcode.com/problems/mas...

负雪明烛 1961

831. 隐藏个人信息

给你一条个人信息 string S,它可能是一个邮箱地址,也可能是一个电话号码。 我们将隐藏它的隐私信息,通过如下规则: <u>1. 电子邮箱</u> 定义名称 <name> 是长度大于等于 2 (length ≥ 2),并且只包含小写字母 a-z 和大写字母 A-Z 的字符串。 电子邮箱地址由名称 <name> 开头,紧接着是符号 &...

Umbrella Corporation 7255

【LintCode题解|隐藏个人信息】

【题目描述】 给你一条个人信息 string S,它可能是一个邮箱地址,也可能是一个电话号码。 我们将隐藏它的隐私信息,通过如下规则: 电子邮箱 定义名称 是长度大于等于 2 (length ≥ 2),并且只包含小写字母 a-z 和大写字母 A-Z 的字符串。 电子邮箱地址由名称 开头,紧接着是符号 ‘@’,后面接着一个名称 ,再接着一个点号 ‘.’,然后是一个名称 。 电子邮箱地址确定为有效...

九章算法的博客 5349

Leetcode 831:隐藏个人信息

题目描述 给你一条个人信息 stringS,它可能是一个邮箱地址,也可能是一个电话号码。 我们将隐藏它的隐私信息,通过如下规则: <u>1. 电子邮箱</u> 定义名称 <name> 是长度大于等于 2 (length ≥ 2),并且只包含小写字母a-z和大写字母A-Z的字符串。 电子邮箱地址由名称 <name> 开头,紧接...

weixin_35338624的博客 706

leetcode 831练习(c++)

#include <regex> // regex_replace #include <algorithm> // transform class Solution { private: string prefix[4] = {"", "+*-", "+**-", "+***-"}; public: string maskPII(string S) ...

u013607605的博客 284

Masking Personal Information

Masking Personal Information We are given apersonal information stringS, which may representeitheran email addressora phone number. We would like to mask thispersonal information according to...

weixin_30347009的博客 213

Leetcode笔记-1.twoSum C++&Java&Python

三种语言leetcode c++&java&python 第一题 两数之和

weixin_39390393的博客 301

AcWing 831. KMP字符串

给定一个模式串S,以及一个模板串P,所有字符串中只包含大小写英文字母以及阿拉伯数字。 模板串P在模式串S中多次作为子串出现。 求出模板串P在模式串S中所有出现的位置的起始下标。 输入格式 第一行输入整数N,表示字符串P的长度。 第二行输入字符串P。 第三行输入整数M,表示字符串S的长度。 第四行输入字符串M。 输出格式 共一行,输出所有出现位置的起始下标(下标从0开始计数),整数...

weixin_41514525的博客 265

leetcode 20题解【C++/Java/Python】

20. 有效的括号 20. Valid Parentheses 题目: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{}" 输出: true ...

weixin_34082695的博客 245
上一篇: leetcode 20. Valid Parentheses 题解【C++/Java/Python】
下一篇: leetcode 680. Valid Palindrome II 题解【C++/Java/Python】
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值