0831. Masking Personal Information

https://leetcode.com/problems/masking-personal-information

Description

You are given a personal information string s, representing either an email address or a phone number. Return the masked personal information using the below rules.

Email address:

An email address is:

  • A name consisting of uppercase and lowercase English letters, followed by

  • The '@' symbol, followed by

  • The domain consisting of uppercase and lowercase English letters with a dot '.' somewhere in the middle (not the first or last character).

To mask an email:

  • The uppercase letters in the name and domain must be converted to lowercase letters.

  • The middle letters of the name (i.e., all but the first and last letters) must be replaced by 5 asterisks "*****".

Phone number:

A phone number is formatted as follows:

  • The phone number contains 10-13 digits.

  • The last 10 digits make up the local number.

  • The remaining 0-3 digits, in the beginning, make up the country code.

  • Separation characters from the set {'+', '-', '(', ')', ' '} separate the above digits in some way.

To mask a phone number:

  • Remove all separation characters.

  • The masked phone number should have the form:

    • "***-***-XXXX" if the country code has 0 digits.

    • "+*-***-***-XXXX" if the country code has 1 digit.

    • "+**-***-***-XXXX" if the country code has 2 digits.

    • "+***-***-***-XXXX" if the country code has 3 digits.

  • "XXXX" is the last 4 digits of the local number.

Example 1:

**Input:** s = "LeetCode@LeetCode.com"
**Output:** "l*****e@leetcode.com"
**Explanation:** s is an email address.
The name and domain are converted to lowercase, and the middle of the name is replaced by 5 asterisks.

Example 2:

**Input:** s = "AB@qq.com"
**Output:** "a*****b@qq.com"
**Explanation:** s is an email address.
The name and domain are converted to lowercase, and the middle of the name is replaced by 5 asterisks.
Note that even though "ab" is 2 characters, it still must have 5 asterisks in the middle.

Example 3:

**Input:** s = "1(234)567-890"
**Output:** "***-***-7890"
**Explanation:** s is a phone number.
There are 10 digits, so the local number is 10 digits and the country code is 0 digits.
Thus, the resulting masked number is "***-***-7890".

Example 4:

**Input:** s = "86-(10)12345678"
**Output:** "+**-***-***-5678"
**Explanation:** s is a phone number.
There are 12 digits, so the local number is 10 digits and the country code is 2 digits.
Thus, the resulting masked number is "+**-***-***-7890".

Constraints:

  • s is either a valid email or a phone number.

  • If s is an email:

    • 8 <= s.length <= 40

    • s consists of uppercase and lowercase English letters and exactly one '@' symbol and '.' symbol.

  • If s is a phone number:

    • 10 <= s.length <= 20

    • s consists of digits, spaces, and the symbols '(', ')', '-', and '+'.

ac

Last updated