`
frank-liu
  • 浏览: 1687491 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

leetcode: Restore IP Addresses

 
阅读更多

问题描述:

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

For example:
Given "25525511135",

return ["255.255.11.135", "255.255.111.35"]. (Order does not matter)

原问题链接:https://leetcode.com/problems/restore-ip-addresses/

 

问题分析

  在这个问题描述里,主要针对的是ipv4的值的情况。从给定的字符串来说,一个ip地址所对应的地址分为4个字段,每个字段对应的数值最多为3位。假定我们先考虑地址的第一个部分,那么它可以取的值为0到255之间。所以它在对应的字符串里可以取第一个字符,第一二个字符和第一到第三个字符的情况。它们对应于字符串里的子串(s.charAt(0, 1), s.charAt(0, 2), s.charAt(0, 3))。这些情况里我们还需要判断它最终解析成整数的值是否在255之内。

  这样,对于取ip地址的第一段来说,我们只需要循环的取前面的1, 2, 3这几个字符的情况来判断就可以了。对于后面的第二、三四段来说也类似。每次在前一个的基础上取1, 2, 3这几个字符,然后再来判断。如果合格的,就将构造出来的串加入到结果列表中。

  按照这个思路,详细的代码实现如下:

 

public class Solution {
    public List<String> restoreIpAddresses(String s) {
        List<String> list = new ArrayList<String>();
        int len = s.length();
        for(int i = 1; i < 4 && i < len - 2; i++) {
            for(int j = i + 1; j < i + 4 && j < len - 1; j++) {
                for(int k = j + 1; k < j + 4 && k < len; k++) {
                    String s1 = s.substring(0, i);
                    String s2 = s.substring(i, j);
                    String s3 = s.substring(j, k);
                    String s4 = s.substring(k, len);
                    if(isValid(s1) && isValid(s2) && isValid(s3) && isValid(s4))
                        list.add(s1 + "." + s2 + "." + s3 + "." + s4);
                }
            }
        }
        return list;
    }
    
    public boolean isValid(String s){
        if(s.length() > 3 || s.length() == 0 || (s.charAt(0) == '0' && s.length() > 1) || Integer.parseInt(s) > 255)
            return false;
        return true;
    }
}

 

分享到:
评论

相关推荐

    leetcode字符串括号level-leetcode:LeetCode解题记录

    restoreIPAddresses 复原IP地址 threeSum 三数之和 search 搜索旋转排序数组 1. 3. 9. 75. 209. 219. 167. 268. 344. 349. 454. 447. 695. 674. string 字符串 20. 150. linklist 链表 19. 24. 86. 92. 203. 206. ...

    python-leetcode题解之093-Restore-IP-Addresses

    python python_leetcode题解之093_Restore_IP_Addresses

    c语言-leetcode题解之0093-restore-ip-addresses.zip

    c语言基础 c语言_leetcode题解之0093_restore_ip_addresses.zip

    js-leetcode题解之93-restore-ip-addresses.js

    javascript js_leetcode题解之93-restore-ip-addresses.js

    leetcode怎么计算空间复杂度是指-LeetCode-Solution:我的第一个LeetCode解决方案

    093:Restore IP Addresses 树的遍历问题也可以用这种思想来解释。只不过是特殊的递归而已。(只有两路,不用循环) 题型二:动态规划(要整理搜索和DP的区别,都可以用一个状态转移公式F(n)表示) 053:最大字串...

    leetcode盒子嵌套-leetcode-text:leetcode-文本

    leetcode盒子嵌套 leetcode-text 92.Reverse Linked List II Runtime: 4 ms, faster than 67.04% of C online submissions for Reverse Linked List II. Memory Usage: 6.9 MB, less than 100.00% of C online ...

    LeetCode 93. 复原IP地址.docx

    public List&lt;String&gt; restoreIpAddresses(String s) { List&lt;String&gt; list = new ArrayList(); int len; if (s == null || (len = s.length()) || len &gt; 12) { return list; } for (int i = 0; i ; i++) { ...

    leetcode卡-arts:每周输出:Algorithm+Review+Tip+Share

    Algorithm:restore-ip-addresses(递归) Review:redis sentinel conf Tip:redis查看主从同步是否完成 Share:学习总结 - docker的基本使用 第一周 Algorithm:reverse-linked-list-ii(链表) Review:linux编程...

    手稿_V1.17

    `restoreIpAddresses` 是主入口,它初始化结果集合并调用 `helper` 函数开始搜索。 2. 在 `helper` 函数中,我们进行递归调用或循环迭代,对于每种可能的子串长度(1, 2, 或 3),检查其是否满足条件并进行处理。 3....

    leetcode卡-LeetCodeMing:ARTS之Leetcode记录

    leetcode卡 LeetCodeMing 记录自己日常刷题LeetCode的点滴,技术改变世界,FOR ...93.Restore IP Addresses [官网链接] () Array 1.Two Sum 15.3Sum 16.3Sum Closest 18.4Sum Other 306.Additive Number [官网链接] ()

    复原IP地址1

    def restoreIpAddresses(self, s: str) -&gt; List[str]: s_len = len(s) res = [] if s_len &lt; 4 or s_len &gt; 12: return res path = [] self.dfs(s, s_len, 0, 0, path, res) return res def dfs(self, s, ...

    手稿_V1.032

    `Solution`类有一个公共成员函数`restoreIpAddresses`,它接收一个字符串`s`作为参数,用于恢复可能的IP地址。同时,还定义了一个私有辅助函数`helper`,用于递归处理字符串`s`来构造IP地址。 2. **递归算法**:`...

    Coding Interview In Java

    leetcode Java 246 題目及解答 (英文) Contents 1 Rotate Array in Java 15 2 Reverse Words in a String II 19 ...243 Restore IP Addresses 589 244 Reverse Integer 591 245 Palindrome Number 593

Global site tag (gtag.js) - Google Analytics