思路
根据题目描述简单模拟即可:
- 首先将数字全部提取出来,并按三个一组分块;
- 然后判断分块数量,如果大于2且最后一个分块长度为1,则需要进行处理:将它们修改为2个数字一组的两个分块
class Solution {
public String reformatNumber(String number) {
StringBuilder sb = new StringBuilder();
int count = 0;
for (char c : number.toCharArray()) {
if (c >= '0' && c <= '9'){
sb.append(c);
count++;
}
if (count == 3){
count = 0;
sb.append('-');
}
}
String[] split = sb.toString().split("-");
int n = split.length;
if (n > 1 && split[n-1].length() == 1){
split[n - 1] = split[n - 2].charAt(split[n - 2].length()-1) + split[n - 1];
split[n - 2] = split[n - 2].substring(0, split[n - 2].length()-1);
}
return String.join("-", split);
}
}