LeetCode 831 Masking Personal Information

LeetCode 831

Masking Personal Information

  • Problem Description:
    输入的字符串可能是email形式也可能是phone number形式,题目需要做的就是对不同的字符串进行一定的处理。

    具体的题目信息:
    https://leetcode.com/problems/masking-personal-information/description/

  • Example: 题目给出的例子如下所示
    LeetCode 831 Masking Personal Information_第1张图片
  • Solution:
    • 解题思路:
      (1)根据字符串第一个字符判断该字符串是email还是phone number。
      (2)如果是email,进行大小写的转换。如果是数字,根据数字个数确定“*”的个数和前面是否需要加上国家编号。
    • 编程实现:
class Solution {
public:
    string maskPII(string S) {
        string temp = "";
        if (S.length() == 0)
            return temp;
        //通过第一个字符判断该字符串是email还是phone number
        if ((S[0]>='a'&&S[0]<='z')||(S[0]>='A'&&S[0]<='Z')) {
            temp += (S[0]>='A'&& S[0]<='Z') ?(S[0]+32):S[0];
            temp += "*****";
            for (int i = S.find('@')-1; i < S.length(); i++) {
                if (i == S.find('@') || i ==S.find('.')) {
                    temp += S[i];
                } else {
                    temp += (S[i]>='A'&& S[i]<='Z') ?(S[i]+32):S[i];
                }
            }
        } else {
            //申明vector数组单独存储数字
            vector<char> number;
            for (int j = 0; j < S.length(); j++) {
                if (S[j]>='0'&&S[j]<='9') {
                    number.push_back(S[j]);
                }
            }
            //若phone number只有当地号码,前面没有国家编号(可能存在表述不当,意会即可)
            if (number.size()==10) {
                temp += "***-***-";
            } else {
                int count = number.size()-10;
                //若有国家编号,根据第一位字符确定前面是加“+”还是“-”
                if ((S[0]>='0'&&S[0]<='9')||S[0]=='+'||S[0]=='(') {
                    temp += "+";
                } else {
                    temp += "-";
                }
                while(count--) {
                    temp += "*";
                }
                temp += "-***-***-";
            }
            temp = getlastFour(temp, number);
        }
        return temp;
    }
    //将后四位字符接在temp后面
    string getlastFour(string temp, vector<char> t) {
        for (int k = t.size()-4; k < t.size(); k++) {
            temp += t[k];
        }
        return temp;
    }

};

你可能感兴趣的:(leetcode)