美文网首页
【每日3题(3)】重新格式化电话号码

【每日3题(3)】重新格式化电话号码

作者: 程序员小2 | 来源:发表于2022-07-22 22:10 被阅读0次

    插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
    坚持不懈,越努力越幸运,大家一起学习鸭~~~

    3妹
    2哥:3妹,别看肥皂剧了,今天我们来做一个算法题。

    3妹关掉了电视,高兴的跑过来。
    3妹:好呀好呀,java的数据结构我已经全部学完了,尽管放马过来吧。

    题目:

    给你一个字符串形式的电话号码 number 。number 由数字、空格 ' '、和破折号 '-' 组成。

    请你按下述方式重新格式化电话号码。

    首先,删除 所有的空格和破折号。
    其次,将数组从左到右 每 3 个一组 分块,直到 剩下 4 个或更少数字。剩下的数字将按下述规定再分块:
    2 个数字:单个含 2 个数字的块。
    3 个数字:单个含 3 个数字的块。
    4 个数字:两个分别含 2 个数字的块。
    最后用破折号将这些块连接起来。注意,重新格式化过程中 不应该 生成仅含 1 个数字的块,并且 最多 生成两个含 2 个数字的块。

    返回格式化后的电话号码。

    示例 1:

    输入:number = "1-23-45 6"
    输出:"123-456"
    解释:数字是 "123456"
    步骤 1:共有超过 4 个数字,所以先取 3 个数字分为一组。第 1 个块是 "123" 。
    步骤 2:剩下 3 个数字,将它们放入单个含 3 个数字的块。第 2 个块是 "456" 。
    连接这些块后得到 "123-456" 。
    示例 2:

    输入:number = "123 4-567"
    输出:"123-45-67"
    解释:数字是 "1234567".
    步骤 1:共有超过 4 个数字,所以先取 3 个数字分为一组。第 1 个块是 "123" 。
    步骤 2:剩下 4 个数字,所以将它们分成两个含 2 个数字的块。这 2 块分别是 "45" 和 "67" 。
    连接这些块后得到 "123-45-67" 。
    示例 3:

    输入:number = "123 4-5678"
    输出:"123-456-78"
    解释:数字是 "12345678" 。
    步骤 1:第 1 个块 "123" 。
    步骤 2:第 2 个块 "456" 。
    步骤 3:剩下 2 个数字,将它们放入单个含 2 个数字的块。第 3 个块是 "78" 。
    连接这些块后得到 "123-456-78" 。
    示例 4:

    输入:number = "12"
    输出:"12"
    示例 5:

    输入:number = "--17-5 229 35-39475 "
    输出:"175-229-353-94-75"

    提示:

    2 <= number.length <= 100
    number 由数字和字符 '-' 及 ' ' 组成。
    number 中至少含 2 个数字。

    java代码:

    class Solution {
        public String reformatNumber(String number) {
            number = number.replace(" ", "");
            number = number.replace("-", "");
    
            int n = number.length();
            StringBuilder sbd = new StringBuilder();
            if(n <=3) {
                sbd.append(number);
                return sbd.toString();
            }
            
            int duan = n/3;
            int yu = n%3;
    
            for(int i=0;i<duan-1;i++) {
                sbd.append(number.substring(3*i, 3*i+3)).append("-");
            }
    
            if(yu ==0) {
                sbd.append(number.substring(n-3));
            }else if(yu == 1) {
                sbd.append(number.substring(n-4, n-2)).append("-").append(number.substring(n-2));
            }else {
                sbd.append(number.substring(n-5, n-2)).append("-").append(number.substring(n-2));
            }
    
            return sbd.toString();
        }
    }
    

    相关文章

      网友评论

          本文标题:【每日3题(3)】重新格式化电话号码

          本文链接:https://www.haomeiwen.com/subject/xqetbrtx.html