G
N
I
D
A
O
L

给你一条个人信息字符串 s ,可能表示一个 邮箱地址 ,也可能表示一串 电话号码 。

题目链接:https://leetcode.cn/problems/masking-personal-information

题目链接:https://leetcode.cn/problems/masking-personal-information

# 解题思路

直接按题意模拟,分别处理电话号码和邮箱即可。

# 两种字符串拼接比较

  • 使用 String.format ()
a
class Solution {
    public String maskPII(String s) {
        int at = s.indexOf('@');
        if (at != -1) {
            // 是邮箱
            if (at > 0) {
                char first = Character.toLowerCase(s.charAt(0));
                char last = Character.toLowerCase(s.charAt(at - 1));
                String domain = s.substring(at + 1).toLowerCase();
                return String.format("%c*****%c@%s", first, last, domain);
            } else {
                return "";
            }
        } else {
            // 是电话号码
            char[] chs = s.toCharArray();
            int k = 0;
            for (int i = 0; i < chs.length; ++i) {
                if (chs[i] >= '0' && chs[i] <= '9') {
                    chs[k++] = chs[i];
                }
            }
            if (k < 10) return "";
            String ph = new String(chs, k - 4, 4);
            if (k == 10) {
                return String.format("***-***-%s", ph);
            } else {
                StringBuilder sb = new StringBuilder();
                while (k > 10) {
                    sb.append('*');
                    --k;
                }
                return String.format("+%s-***-***-%s", sb.toString(), ph);
            }
        }
    }
}

image.png

  • 使用 StringBuilder
a
class Solution {
    public String maskPII(String s) {
        int at = s.indexOf('@');
        if (at != -1) {
            // 是邮箱
            if (at > 0) {
                StringBuilder ret = new StringBuilder();
                ret.append(Character.toLowerCase(s.charAt(0)))
                     .append("*****")
                     .append(Character.toLowerCase(s.charAt(at - 1)))
                     .append(s.substring(at).toLowerCase());
                return ret.toString();
            } else {
                return "";
            }
        } else {
            // 是电话号码
            char[] chs = s.toCharArray();
            int k = 0;
            for (int i = 0; i < chs.length; ++i) {
                if (chs[i] >= '0' && chs[i] <= '9') {
                    chs[k++] = chs[i];
                }
            }
            if (k < 10) return "";
            StringBuilder sb = new StringBuilder();
            String ph = new String(chs, k - 4, 4);
            if (k == 10) {
                sb.append("***-***-").append(ph);
            } else {
                sb.append('+');
                while (k > 10) {
                    sb.append('*');
                    --k;
                }
                sb.append("-***-***-").append(ph);
            }
            return sb.toString();
        }
    }
}

image.png

更新于 阅读次数

😉觉得写的还不错,请我喝杯咖啡吧😁

独步凌波 微信支付

微信支付

独步凌波 支付宝

支付宝