插: 前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站钉寝,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家甲抖。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站。
堅(jiān)持不懈心铃,越努力越幸運(yùn)准谚,大家一起學(xué)習(xí)鴨~~~
2哥:3妹,別看肥皂劇了去扣,今天我們來(lái)做一個(gè)算法題。
3妹關(guān)掉了電視街佑,高興的跑過(guò)來(lái)缅疟。
3妹:好呀好呀,java的數(shù)據(jù)結(jié)構(gòu)我已經(jīng)全部學(xué)完了哲戚,盡管放馬過(guò)來(lái)吧。
題目:
給你一個(gè)字符串形式的電話號(hào)碼 number 艾岂。number 由數(shù)字顺少、空格 ' '、和破折號(hào) '-' 組成王浴。
請(qǐng)你按下述方式重新格式化電話號(hào)碼脆炎。
首先,刪除 所有的空格和破折號(hào)氓辣。
其次秒裕,將數(shù)組從左到右 每 3 個(gè)一組 分塊,直到 剩下 4 個(gè)或更少數(shù)字钞啸。剩下的數(shù)字將按下述規(guī)定再分塊:
2 個(gè)數(shù)字:?jiǎn)蝹€(gè)含 2 個(gè)數(shù)字的塊几蜻。
3 個(gè)數(shù)字:?jiǎn)蝹€(gè)含 3 個(gè)數(shù)字的塊。
4 個(gè)數(shù)字:兩個(gè)分別含 2 個(gè)數(shù)字的塊体斩。
最后用破折號(hào)將這些塊連接起來(lái)入蛆。注意,重新格式化過(guò)程中 不應(yīng)該 生成僅含 1 個(gè)數(shù)字的塊硕勿,并且 最多 生成兩個(gè)含 2 個(gè)數(shù)字的塊哨毁。
返回格式化后的電話號(hào)碼。
示例 1:
輸入:number = "1-23-45 6"
輸出:"123-456"
解釋?zhuān)簲?shù)字是 "123456"
步驟 1:共有超過(guò) 4 個(gè)數(shù)字源武,所以先取 3 個(gè)數(shù)字分為一組扼褪。第 1 個(gè)塊是 "123" 。
步驟 2:剩下 3 個(gè)數(shù)字粱栖,將它們放入單個(gè)含 3 個(gè)數(shù)字的塊话浇。第 2 個(gè)塊是 "456" 。
連接這些塊后得到 "123-456" 闹究。
示例 2:
輸入:number = "123 4-567"
輸出:"123-45-67"
解釋?zhuān)簲?shù)字是 "1234567".
步驟 1:共有超過(guò) 4 個(gè)數(shù)字幔崖,所以先取 3 個(gè)數(shù)字分為一組。第 1 個(gè)塊是 "123" 渣淤。
步驟 2:剩下 4 個(gè)數(shù)字赏寇,所以將它們分成兩個(gè)含 2 個(gè)數(shù)字的塊。這 2 塊分別是 "45" 和 "67" 价认。
連接這些塊后得到 "123-45-67" 嗅定。
示例 3:
輸入:number = "123 4-5678"
輸出:"123-456-78"
解釋?zhuān)簲?shù)字是 "12345678" 。
步驟 1:第 1 個(gè)塊 "123" 用踩。
步驟 2:第 2 個(gè)塊 "456" 渠退。
步驟 3:剩下 2 個(gè)數(shù)字忙迁,將它們放入單個(gè)含 2 個(gè)數(shù)字的塊。第 3 個(gè)塊是 "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 個(gè)數(shù)字梅誓。
java代碼:
class Solution {
public String reformatNumber(String number) {
number = number.replace(" ", "");
number = number.replace("-", "");
int n = number.length();
StringBuilder sbd = new StringBuilder();
if(n <=3) {
sbd.append(number);
return sbd.toString();
}
int duan = n/3;
int yu = n%3;
for(int i=0;i<duan-1;i++) {
sbd.append(number.substring(3*i, 3*i+3)).append("-");
}
if(yu ==0) {
sbd.append(number.substring(n-3));
}else if(yu == 1) {
sbd.append(number.substring(n-4, n-2)).append("-").append(number.substring(n-2));
}else {
sbd.append(number.substring(n-5, n-2)).append("-").append(number.substring(n-2));
}
return sbd.toString();
}
}