zoukankan      html  css  js  c++  java
  • 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()
        }
    }
  • 相关阅读:
    UVALive 7509 Dome and Steles
    HDU 5884 Sort
    Gym 101194H Great Cells
    HDU 5451 Best Solver
    HDU 5883 The Best Path
    HDU 5875 Function
    卡特兰数
    UVa 11729 Commando War 突击战
    UVa 11292 The Dragon of Loowater 勇者斗恶龙
    Spark Scala Flink版本对应关系
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/14163876.html
Copyright © 2011-2022 走看看