• LeetCode 93. Restore IP Addresses


    LeetCode 93. Restore IP Addresses (复原 IP 地址)

    题目

    链接

    https://leetcode.cn/problems/restore-ip-addresses/

    问题描述

    有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。

    例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "192.168@1.1" 是 无效 IP 地址。
    给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 '.' 来形成。你 不能 重新排序或删除 s 中的任何数字。你可以按 任何 顺序返回答案。

    示例

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

    提示

    1 <= s.length <= 20
    s 仅由数字组成

    思路

    回溯加剪枝,如果当前选取的不对,就没必要继续往后了,直接return即可。

    复杂度分析

    时间复杂度 O(n2)
    空间复杂度 O(n)
    

    代码

    Java

        LinkedList<String> path = new LinkedList<>();
        List<String> ans = new LinkedList<>();
    
        public List<String> restoreIpAddresses(String s) {
            trace(s, 0);
            return ans;
        }
    
        public void trace(String s, int index) {
            if (index == s.length() && path.size() == 4) {
                String tmp = path.get(0) + "." + path.get(1) + "." + path.get(2) + "." + path.get(3);
                ans.add(tmp);
                return;
            }
            for (int i = index + 1; i <= s.length(); i++) {
                String tmp = s.substring(index, i);
                if (test(tmp)) {
                    path.add(tmp);
                    trace(s, i);
                    path.removeLast();
                } else {
                    return;
                }
            }
        }
    
        public boolean test(String s) {
            if (s.length() == 0) {
                return false;
            }
            if (s.charAt(0) == '0' && !s.equals("0")) {
                return false;
            }
            int num = Integer.valueOf(s);
            if (num < 0 || num > 255) {
                return false;
            }
            return true;
        }
    
  • 相关阅读:
    格式化数据和DataBinder.Eval用法范例【转】
    动态GridView +DataTable
    Container.DataItem
    SQL自定义字段排序
    VS 2008 Web Deployment Project
    清除SQLServer日志
    SQL常用功能
    在Web应用程序中执行计划任务(多线程)
    得到临时表的列数
    用rdlc文件直接导出到excel或PDF
  • 原文地址:https://www.cnblogs.com/blogxjc/p/16375238.html
Copyright © 2020-2023  润新知