1694. Reformat Phone Number LeetCode Solution
In this guide, you will get 1694. Reformat Phone Number LeetCode Solution with the best time and space complexity. The solution to Reformat Phone Number problem is provided in various programming languages like C++, Java, and Python. This will be helpful for you if you are preparing for placements, hackathons, interviews, or practice purposes. The solutions provided here are very easy to follow and include detailed explanations.
Table of Contents
- Problem Statement
- Complexity Analysis
- Reformat Phone Number solution in C++
- Reformat Phone Number solution in Java
- Reformat Phone Number solution in Python
- Additional Resources

Problem Statement of Reformat Phone Number
You are given a phone number as a string number. number consists of digits, spaces ‘ ‘, and/or dashes ‘-‘.
You would like to reformat the phone number in a certain manner. Firstly, remove all spaces and dashes. Then, group the digits from left to right into blocks of length 3 until there are 4 or fewer digits. The final digits are then grouped as follows:
2 digits: A single block of length 2.
3 digits: A single block of length 3.
4 digits: Two blocks of length 2 each.
The blocks are then joined by dashes. Notice that the reformatting process should never produce any blocks of length 1 and produce at most two blocks of length 2.
Return the phone number after formatting.
Example 1:
Input: number = “1-23-45 6”
Output: “123-456”
Explanation: The digits are “123456”.
Step 1: There are more than 4 digits, so group the next 3 digits. The 1st block is “123”.
Step 2: There are 3 digits remaining, so put them in a single block of length 3. The 2nd block is “456”.
Joining the blocks gives “123-456”.
Example 2:
Input: number = “123 4-567”
Output: “123-45-67”
Explanation: The digits are “1234567”.
Step 1: There are more than 4 digits, so group the next 3 digits. The 1st block is “123”.
Step 2: There are 4 digits left, so split them into two blocks of length 2. The blocks are “45” and “67”.
Joining the blocks gives “123-45-67”.
Example 3:
Input: number = “123 4-5678”
Output: “123-456-78”
Explanation: The digits are “12345678”.
Step 1: The 1st block is “123”.
Step 2: The 2nd block is “456”.
Step 3: There are 2 digits left, so put them in a single block of length 2. The 3rd block is “78”.
Joining the blocks gives “123-456-78”.
Constraints:
2 <= number.length <= 100
number consists of digits and the characters '-' and ' '.
There are at least two digits in number.
Complexity Analysis
- Time Complexity:
- Space Complexity:
1694. Reformat Phone Number LeetCode Solution in C++
class Solution {
public:
string reformatNumber(string number) {
string ans;
std::erase(number, '-');
std::erase(number, ' ');
int i = 0; // number's index
for (i = 0; i + 4 < number.length(); i += 3)
ans += number.substr(i, 3) + '-';
const int countFinalDigits = number.length() - i;
if (countFinalDigits < 4)
ans += number.substr(i);
else // countFinalDigits == 4
ans += number.substr(i, 2) + '-' + number.substr(i + 2);
return ans;
}
};
/* code provided by PROGIEZ */
1694. Reformat Phone Number LeetCode Solution in Java
class Solution {
public String reformatNumber(String number) {
StringBuilder sb = new StringBuilder();
number = number.replaceAll("[-\\s]", "");
int i = 0; // number's index
for (i = 0; i + 4 < number.length(); i += 3)
sb.append(number.substring(i, i + 3) + '-');
final int countFinalDigits = number.length() - i;
if (countFinalDigits < 4)
sb.append(number.substring(i));
else // countFinalDigits == 4
sb.append(number.substring(i, i + 2) + '-' + number.substring(i + 2));
return sb.toString();
}
}
// code provided by PROGIEZ
1694. Reformat Phone Number LeetCode Solution in Python
class Solution:
def reformatNumber(self, number: str) -> str:
ans = []
number = number.replace("-", "").replace(" ", "")
i = 0 # number's index
while i + 4 < len(number):
ans.append(number[i:i + 3] + '-')
i += 3
countFinalDigits = len(number) - i
if countFinalDigits < 4:
ans.append(number[i:])
else: # countFinalDigits == 4
ans.append(number[i:i + 2] + '-' + number[i + 2:])
return ''.join(ans)
# code by PROGIEZ
Additional Resources
- Explore all LeetCode problem solutions at Progiez here
- Explore all problems on LeetCode website here
Happy Coding! Keep following PROGIEZ for more updates and solutions.