Class Solution

  • All Implemented Interfaces:

    
    public final class Solution
    
                        

    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" 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:

    • If s is a phone number:

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
    • Field Summary

      Fields 
      Modifier and Type Field Description
    • Constructor Summary

      Constructors 
      Constructor Description
      Solution()
    • Enum Constant Summary

      Enum Constants 
      Enum Constant Description
    • Method Summary

      Modifier and Type Method Description
      final String maskPII(String s)
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait