• 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()
        }
    }
  • 相关阅读:
    Command Line Tools for win32
    鼠标快速复制粘帖工具!
    IBM T系列笔记本安装2003未知设备问题!
    拔智齿!痛苦磨难中!
    I am a hero!
    vim学习笔记!
    产生数
    NumPy矩阵运算
    1130:找第一个只出现一次的字符
    小A与小姐姐给气球涂色[dp + 快速幂]
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/14163876.html
Copyright © 2020-2023  润新知