1694. Reformat Phone Number

1694. Reformat Phone Number #

题目 #

  • 给你一个字符串形式的电话号码 numbernumber 由数字、空格 ' '、和破折号 '-' 组成。
  • 请你按下述方式重新格式化电话号码。
    • 首先,删除 所有的空格和破折号。
    • 其次,将数组从左到右 每 3 个一组 分块,直到 剩下 4 个或更少数字。剩下的数字将按下述规定再分块:
      • 2 个数字:单个含 2 个数字的块。
      • 3 个数字:单个含 3 个数字的块。
      • 4 个数字:两个分别含 2 个数字的块。
    • 最后用破折号将这些块连接起来。注意,重新格式化过程中 不应该 生成仅含 1 个数字的块,并且 最多 生成两个含 2 个数字的块。
  • 返回格式化后的电话号码。

思路 #

模拟 #

代码 #

模拟 #

class Solution {
    public String reformatNumber(String number) {
        String ans = "";
        
        String digits = "";
        for (int i = 0; i < number.length(); i++) {
            Character ch = number.charAt(i);
            if (Character.isDigit(ch)) digits += ch;
        }
        
        int N = digits.length();
        for (int i = 0; i < N; i++) {
            ans += digits.charAt(i);
            switch (N % 3) {
                case 0:
                case 2:
                    if (i+1<N && (i+1) % 3 == 0) ans += "-";
                    break;
                case 1:
                    if (i<N-4 && (i+1) % 3 == 0) ans += "-";
                    else if (i == N-3) ans += "-";
                    break;
            }
        }
        return ans;
    }
}

致谢 #

宫水三叶