• [Swift]LeetCode93. 复原IP地址 | Restore IP Addresses


    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/9936814.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    Given a string containing only digits, restore it by returning all possible valid IP address combinations.

    Example:

    Input: "25525511135"
    Output: ["255.255.11.135", "255.255.111.35"]

    给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。

    示例:

    输入: "25525511135"
    输出: ["255.255.11.135", "255.255.111.35"]

    16ms
     1 class Solution {
     2     func restoreIpAddresses(_ s: String) -> [String] {
     3         if s.characters.count < 4 || s.characters.count > 12 {
     4             return []
     5         }
     6         
     7         let characters = Array(s.characters)
     8         var result = [String]()
     9         var candidate = [String]()
    10         
    11         backtracking(characters, 0, &candidate, &result)
    12         
    13         return result
    14     }
    15     private func backtracking(_ characters: [Character], _ pos: Int, _ candidate: inout [String], _ result: inout [String]) {
    16         if candidate.count == 4 {
    17             result.append(candidate.joined(separator: "."))
    18             return
    19         }
    20         
    21         let charsLeft = characters.count - pos
    22         let groupsLeft = 4 - candidate.count
    23         let minLen = groupsLeft == 1 ? charsLeft - groupsLeft + 1 : 1
    24         let maxLen = characters[pos] == "0" ? 1 : min(3, charsLeft - groupsLeft + 1)
    25         
    26         if minLen > maxLen {
    27             return
    28         }
    29 
    30         for len in minLen...maxLen {
    31             let num = String(characters[pos..<(pos + len)])
    32             if Int(num)! > 255 {
    33                 continue
    34             }
    35             candidate.append(num)
    36             backtracking(characters, pos + len, &candidate, &result)
    37             candidate.removeLast()
    38         }
    39     }
    40 }
  • 相关阅读:
    关于 setColorFilter 和 PorterDuff.Mode
    下拉刷新 SwipRefreshLayout
    from athletelist import AthleteList出现红色下滑波浪线警告
    IndentationError: unindent does not match any outer indentation level
    定制数据对象2
    定制数据对象
    数据处理02
    数据处理
    python 工具箱
    嵌套列表的格式打印
  • 原文地址:https://www.cnblogs.com/strengthen/p/9936814.html
Copyright © 2020-2023  润新知