一. 问题描述

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

示例:

输入: "25525511135"

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

二. 解题思路

本题思路:采用回溯算法进行求解,建立递归函数(全局变量list存储IP地址,局部变量data存储剩下的字符串,length存储当前需要填的位数,数组nums存储ip中各个段的值)

步骤一:建立递归函数,判断,当nums数组最后一位数组满足要求则将数组按照格式要求存储到list中,否则,进入步骤二。

步骤二:进行回溯算法,依次从data中取出数字,判断其是否小于256且大于等于0,则将其添加到nums[length]中,在data中删除该数字,继续递归,返回步骤一。

步骤三:这道题需要注意细节,00,001这种情况和数字的界限问题,所以要考虑周全。

三. 执行结果

执行用时 :3 ms, 在所有 java 提交中击败了89.68%的用户

内存消耗 :36.3 MB, 在所有 java 提交中击败了48.81%的用户

四. Java代码

class Solution {
public List<String> restoreIpAddresses(String s) {
List<String> list=new ArrayList<String>();
int []nums= {-1,-1,-1,-1};
address(list,s,0,nums);
return list;
}
public void address(List<String> list,String data,int length,int []nums) {
if(nums[3]<256&&nums[3]>=0&&data.length()<=0){
String temp="";
for(int i=0;i<4;i++) {
temp=temp+nums[i];
if(i<3)
temp=temp+"."; }
list.add(temp);
} if(length==4&&data.length()>=4){
return;
}
String tem="";
for(int j=0;j<3&&j<data.length()&&length<4&&data.length()>0;j++){
tem=tem+data.charAt(j);
int temdata=Integer.parseInt(tem);
if(tem.charAt(0)=='0'&&tem.length()>1){
continue;
}
if(temdata<256&&temdata>=0) {
String getdata=data.substring(j+1,data.length() );
int []num= {-1,-1,-1,-1};
System.arraycopy(nums, 0, num, 0, num.length);
num[length]=temdata;
address(list,getdata,length+1,num);
}
} } }

第93题:复原IP地址的更多相关文章

  1. LeetCode:复原IP地址【93】

    LeetCode:复原IP地址[93] 题目描述 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: [&qu ...

  2. Java实现 LeetCode 93 复原IP地址

    93. 复原IP地址 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: ["255.255.11. ...

  3. [LeetCode] Restore IP Addresses 复原IP地址

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

  4. leetcode刷题-93复原IP地址

    题目 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 '.' 分隔. 示例: 输入: &q ...

  5. LeetCode(93): 复原IP地址

    Medium! 题目描述: 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: ["255.255. ...

  6. 93. 复原 IP 地址

    做题思路or感想 这种字符串切割的问题都可以用回溯法来解决 递归三部曲: 递归参数 因为要切割字符串,所以要用一个startIndex来控制子串的开头位置,即是会切割出一个范围是[startIndex ...

  7. leetcode 93 复原IP地址

    IP地址,分成四段,每段是0-255,按照每段的长度分别为1,2,3下一段长度分别1,2,3再下一段......进行递归遍历,能满足条件的假如res中.比较难想到的就是假如有一段是三位的010是不符合 ...

  8. 93复原IP地址。

    from typing import List# 这道题不是很难,但是限制条件有很多.# 用递归的方法可以很容易的想到.只需要四层递归就好了.# 每次进行加上限制条件.过滤每一层就好了..class ...

  9. 复原IP地址

    这道题有点不好理解 export default (str) => { // 保存所有符合条件的IP地址 let r = [] // 分四步递归处理ip分段 let search = (cur, ...

随机推荐

  1. 迷惑性很强的crontab

      提到定时任务,我们通常会想起linux的crontab,可以说服务器端大部分定时任务都是由它完成的.这东西固然耗用,但是坑也不少.   这不,昨天我在部署一个备份任务的时候,就不幸踩坑了.差点酿成 ...

  2. 封装ADO库之MFC应用

    Microsoft Activex Data Objects(ADO)支持用于建立基于客户端/服务器和web的应用程序开发的主要功能.其主要优点是易于使用.高速度.低内存支出和占用磁盘空间较少. 本次 ...

  3. 第4章:LeetCode--链表

    2. Add Two Numbers: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNo ...

  4. 猴子补丁(Monkey Patching)

    猴子补丁是我在面试的时候接触的一到题,学python的时候,我根本就没有听说这个概念!那接下来我们来分析一下: 1.什么是猴子补丁? 2.猴子补丁的功能? 3.猴子补丁的应用场景? 一.什么是猴子补丁 ...

  5. Python之正则表达式笔记

    概述 概念 Regular Expression 一种文本模式,描述在搜索文本时要匹配的一个或多个字符串 典型场景 数据验证.文本扫描.文本提取.文本替换.文本分割 语法 字面值 普通字符 需转义:\ ...

  6. 【规律】Parentheses

    Parentheses 题目描述 Dave loves strings consisting only of '(' and ')'. Especially, he is interested in ...

  7. @Adaptive注解

    关于@Adaptive注解 引用dubbo官方文档的一段话: ​ Adaptive 可注解在类或方法上.当 Adaptive 注解在类上时,Dubbo 不会为该类生成代理类.注解在方法(接口方法)上时 ...

  8. asp.net MVC 异步分页 PagedList

    最近做一个项目要有的异步分页,先记录下来! 引用: PagedList.css MvcPager.js <link href="~/css/sweetalert2.min.css&qu ...

  9. MySQL的explain语句分析

    +----+-------------+-------+------------+------+---------------+-----+---------+------+------+------ ...

  10. hdu 3342 拓扑模板题

    直接上代码吧 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ...