題目連結:
題目意譯:
你被給定一個以一字串 number 所表示的手機號碼。number 由數字、空白 ' ',或連接號 '-' 所組成。
你想要以特定格式來重新編排手機號碼。首先將所有的空白和連接號移除掉。接著從左至右將數字分成若干個長度為 3 的區塊,直到剩下 4 個位數或更少。最後剩下的位數將按照以下方式分群:
2 個位數:一個長度 2 的區塊。
3 個位數:一個長度 3 的區塊。
4 個位數:兩個長度 2 的區塊。
這些區塊之間將由連接號連接在一起。注意到重新編排格式的過程中不會產生任何長度 1 的區塊,且最多只會產生兩個長度 2 的區塊。
回傳重新編排後的手機號碼。
限制:
2 ≦ number.length ≦ 100
number 由數字以及 '-' 和 ' ' 字元所組成。
在 number 中至少有兩個數字。
範例測資:
範例 1:
輸入: number = "1-23-45 6"
輸出: "123-456"
解釋: 數字為 "123456"。
步驟 1:現在有多於 4 個位數,所以將接下來 3 個位數分成一群。第一個區塊為 "123"。
步驟 2:現在剩 3 個位數,所以將它們分到一個長度為 3 的區塊。第二個區塊為 "456"。
將區塊們連接在一起得到 "123-456"。
範例 2:
輸入: number = "123 4-567"
輸出: "123-45-67"
解釋: 數字為 "1234567"。
步驟 1:現在有多於 4 個位數,所以將接下來 3 個位數分成一群。第一個區塊為 "123"。
步驟 2:現在剩 4 個位數,所以將它們分成兩個長度為 2 的區塊。這些區塊為 "45" 和 "67"。
將區塊們連接在一起得到 "123-45-67"。
範例 3:
輸入: number = "123 4-5678"
輸出: "123-456-78"
解釋: 數字為 "12345678"。
步驟 1:第一個區塊為 "123"。
步驟 2:第二個區塊為 "456"。
步驟 3:現在剩 3 個位數,所以將它們分到一個長度為 2 的區塊。第三個區塊為 "78"。
將區塊們連接在一起得到 "123-456-78"。
解題思維:
模擬即可。首先掃過一次 number,遇到空白或 '-' 字元就將其從字串中刪除。
然後就按照題目每三個數字一組直到剩下不超過 4 個數字。每組之間用一個 '-' 串在一起即可。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。