題目描述:
給你一個字符串形式的電話號碼 number
。number
由數(shù)字叁熔、空格 ' '
阳啥、和破折號 '-'
組成。
請你按下述方式重新格式化電話號碼刷喜。
首先残制,刪除 所有的空格和破折號。
-
其次掖疮,將數(shù)組從左到右每 3 個一組分塊初茶,直到剩下 4 個或更少數(shù)字。剩下的數(shù)字將按下述規(guī)定再分塊:
- 2 個數(shù)字:單個含 2 個數(shù)字的塊浊闪。
- 3 個數(shù)字:單個含 3 個數(shù)字的塊恼布。
- 4 個數(shù)字:兩個分別含 2 個數(shù)字的塊螺戳。
最后用破折號將這些塊連接起來。注意折汞,重新格式化過程中 不應(yīng)該 生成僅含 1 個數(shù)字的塊倔幼,并且 最多 生成兩個含 2 個數(shù)字的塊。
返回格式化后的電話號碼爽待。
示例 1:
輸入:number = "1-23-45 6"
輸出:"123-456"
解釋:數(shù)字是 "123456"
步驟 1:共有超過 4 個數(shù)字损同,所以先取 3 個數(shù)字分為一組。第 1 個塊是 "123" 鸟款。
步驟 2:剩下 3 個數(shù)字膏燃,將它們放入單個含 3 個數(shù)字的塊。第 2 個塊是 "456" 何什。
連接這些塊后得到 "123-456" 组哩。
示例 2:
輸入:number = "123 4-567"
輸出:"123-45-67"
解釋:數(shù)字是 "1234567".
步驟 1:共有超過 4 個數(shù)字,所以先取 3 個數(shù)字分為一組处渣。第 1 個塊是 "123" 禁炒。
步驟 2:剩下 4 個數(shù)字,所以將它們分成兩個含 2 個數(shù)字的塊霍比。這 2 塊分別是 "45" 和 "67" 幕袱。
連接這些塊后得到 "123-45-67" 。
示例 3:
輸入:number = "123 4-5678"
輸出:"123-456-78"
解釋:數(shù)字是 "12345678" 悠瞬。
步驟 1:第 1 個塊 "123" 们豌。
步驟 2:第 2 個塊 "456" 。
步驟 3:剩下 2 個數(shù)字浅妆,將它們放入單個含 2 個數(shù)字的塊望迎。第 3 個塊是 "78" 。
連接這些塊后得到 "123-456-78" 凌外。
示例 4:
輸入:number = "12"
輸出:"12"
示例 5:
輸入:number = "--17-5 229 35-39475 "
輸出:"175-229-353-94-75"
提示:
2 <= number.length <= 100
-
number
由數(shù)字和字符'-'
及' '
組成辩尊。 -
number
中至少含 2 個數(shù)字。
解法:字符串
先清除字符串中的空格和破折號康辑,然后遍歷字符串摄欲,每次遍歷三位,并截取添加到最終的結(jié)果集中疮薇,若遍歷的下標(biāo)到字符串結(jié)尾小于等于4位胸墙,則退出遍歷。
根據(jù)剩余的位數(shù)按咒,分別進行處理:
- 2 個數(shù)字:單個含 2 個數(shù)字的塊迟隅。
- 3 個數(shù)字:單個含 3 個數(shù)字的塊。
- 4 個數(shù)字:兩個分別含 2 個數(shù)字的塊。
代碼:
class Solution {
public String reformatNumber(String number) {
number = number.replace(" ", "");
number = number.replace("-", "");
String result = "";
int i = 0;
for (i = 0; i < number.length(); i += 3) {
if (number.length() - i <= 4) {
break;
}
result = result + number.substring(i, i + 3) + "-";
}
if (number.length() - i == 2 || number.length() - i == 3) {
result += number.substring(i);
}
if (number.length() - i == 4) {
result = result + number.substring(i, i + 2) + "-" + number.substring(i + 2);
}
return result;
}
}