LeetCode——1694.重新格式化电话号码

通过万岁!!!

  • 题目:给你一个字符串,里面包含数字、空格和短横线。然后要求对其进行格式化,要求每三个字符串之间用一个短横线进行连接。但是如果最后剩下两个,短横线单独连接这两个,如果最后剩下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();
    }
}
  • 总结:题目不是特别难,但是稍微有点麻烦。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值