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();
    }
}
    总结:题目不是特别难,但是稍微有点麻烦。
经验分享 程序员 微信小程序 职场和发展