g0801_0900.s0831_masking_personal_information.readme.md Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java Show documentation
Show all versions of leetcode-in-java Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
831\. Masking Personal Information
Medium
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 = "[email protected]"
**Output:** "l\*\*\*\*\*[email protected]"
**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 = "[email protected]"
**Output:** "a\*\*\*\*\*[email protected]"
**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".
**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 `'+'`.