Skip to content

Commit 74670a5

Browse files
solves reformat phone number
1 parent fc3e12c commit 74670a5

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

Diff for: README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@
416416
| 1678 | [Goal Parser Interpretation](https://leetcode.com/problems/goal-parser-interpretation) | [![Java](assets/java.png)](src/GoalParserInterpretation.java) | |
417417
| 1684 | [Count the Number of Consistent Strings](https://leetcode.com/problems/count-the-number-of-consistent-strings) | [![Java](assets/java.png)](src/CountTheNumberOfConsistentStrings.java) | |
418418
| 1688 | [Count of Matches in Tournament](https://leetcode.com/problems/count-of-matches-in-tournament) | [![Java](assets/java.png)](src/CountOfMatchesInTournament.java) | |
419-
| 1694 | [Reformat Phone Number](https://leetcode.com/problems/reformat-phone-number) | | |
419+
| 1694 | [Reformat Phone Number](https://leetcode.com/problems/reformat-phone-number) | [![Java](assets/java.png)](src/ReformatPhoneNumber.java) | |
420420
| 1700 | [Number of Students Unable to Eat Lunch](https://leetcode.com/problems/number-of-students-unable-to-eat-lunch) | | |
421421
| 1704 | [Determine if String Halves Are Alike](https://leetcode.com/problems/determine-if-string-halves-are-alike) | | |
422422
| 1708 | 🔒 [Largest Subarray Length K](https://leetcode.com/problems/largest-subarray-length-k/) | | |

Diff for: src/ReformatPhoneNumber.java

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import java.util.LinkedList;
2+
import java.util.Queue;
3+
4+
public class ReformatPhoneNumber {
5+
public String reformatNumber(String number) {
6+
final Queue<Character> digits = getDigits(number);
7+
final StringBuilder result = new StringBuilder();
8+
int count = 3;
9+
while (!digits.isEmpty()) {
10+
if (digits.size() == 4 && count % 3 == 0) {
11+
result.append(count == 3 ? "" : '-').append(digits.poll()).append(digits.poll())
12+
.append('-').append(digits.poll()).append(digits.poll());
13+
break;
14+
}
15+
result.append(count == 0 ? '-' : "").append(digits.poll());
16+
count = (count + 1) % 3;
17+
}
18+
return result.toString();
19+
}
20+
21+
private Queue<Character> getDigits(String number) {
22+
final Queue<Character> digits = new LinkedList<>();
23+
for (int index = 0 ; index < number.length() ; index++) {
24+
if (Character.isDigit(number.charAt(index))) {
25+
digits.add(number.charAt(index));
26+
}
27+
}
28+
return digits;
29+
}
30+
}

0 commit comments

Comments
 (0)