1694. Reformat Phone Number #
题目 #
- 给你一个字符串形式的电话号码
number
。number
由数字、空格' '
、和破折号'-'
组成。 - 请你按下述方式重新格式化电话号码。
- 首先,删除 所有的空格和破折号。
- 其次,将数组从左到右 每 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;
}
}