• 1694. Reformat Phone Number


    package LeetCode_1694
    
    import java.util.*
    
    /**
     * 1694. Reformat Phone Number
     * https://leetcode.com/problems/reformat-phone-number/
     * You are given a phone number as a string number. number consists of digits, spaces ' ', and/or dashes '-'.
    You would like to reformat the phone number in a certain manner. Firstly, remove all spaces and dashes.
    Then, group the digits from left to right into blocks of length 3 until there are 4 or fewer digits.
    The final digits are then grouped as follows:
    2 digits: A single block of length 2.
    3 digits: A single block of length 3.
    4 digits: Two blocks of length 2 each.
    The blocks are then joined by dashes.
    Notice that the reformatting process should never produce any blocks of length 1 and produce at most two blocks of length 2.
    Return the phone number after formatting.
    
    Example 1:
    Input: number = "1-23-45 6"
    Output: "123-456"
    Explanation: The digits are "123456".
    Step 1: There are more than 4 digits, so group the next 3 digits. The 1st block is "123".
    Step 2: There are 3 digits remaining, so put them in a single block of length 3. The 2nd block is "456".
     * */
    class Solution {
        /*
        * solution: queue, Time:O(n), Space:O(n)
        * */
        fun reformatNumber(number: String): String {
            if (number.length <= 2) {
                return number
            }
            val queue = LinkedList<Char>()
            for (c in number) {
                if (c.isDigit()) {
                    queue.offer(c)
                }
            }
            val sb = StringBuilder()
            while (queue.size > 4) {
                sb.append(queue.pop()).append(queue.pop()).append(queue.pop()).append("-")
            }
            while (queue.size == 4) {
                sb.append(queue.pop()).append(queue.pop()).append("-")
            }
            //checking the rest of in queue
            while (queue.isNotEmpty()) {
                sb.append(queue.pop())
            }
            return sb.toString()
        }
    }
  • 相关阅读:
    机器学习的定义和分类
    选股
    mysql修改密码
    快速排序
    php的错误类型
    MySQL数据库优化
    库存超卖问题
    循环处理
    kafka安装配置
    JavaScript、jQuery杂记
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/14163876.html
Copyright © 2020-2023  润新知