通过万岁!!!
- 题目:给你一个字符串,里面包含数字、空格和短横线。然后要求对其进行格式化,要求每三个字符串之间用一个短横线进行连接。但是如果最后剩下两个,短横线单独连接这两个,如果最后剩下4个,则分成两个2。
- 思路一:首先是将字符串中的数组全部提出出来,保存在一个对象中,然后把这个对象再次进行拆分即可。时间复杂度是2n,空间复杂度也是2n。只不过在拆分的时候需要注意,一些特殊情况的判断即可。
- 技巧:字符串遍历
java代码
class Solution {
public String reformatNumber(String number) {
StringBuilder sb = new StringBuilder();
int len = number.length();
for (int i = 0; i < len; i++) {
if (Character.isDigit(number.charAt(i))) {
sb.append(number.charAt(i));
}
}
len = sb.length();
if (len == 2) {
return sb.toString();
} else if (len == 4) {
sb.insert(2, '-');
return sb.toString();
}
StringBuilder resSb = new StringBuilder();
for (int i = 0; i < len; i++) {
if (i % 3 == 0 && i != 0) {
resSb.append('-');
if (len - i == 2 || len - i == 3) {
resSb.append(sb.substring(i, len));
break;
} else if (len - i == 4) {
resSb.append(sb.substring(i, len - 2));
resSb.append('-');
resSb.append(sb.substring(len - 2, len));
break;
} else {
resSb.append(sb.charAt(i));
}
} else {
resSb.append(sb.charAt(i));
}
}
return resSb.toString();
}
}
- 总结:题目不是特别难,但是稍微有点麻烦。