首页 > 其他分享 >【刷题笔记】93. Restore IP Addresses

【刷题笔记】93. Restore IP Addresses

时间:2023-11-01 17:03:33浏览次数:28  
标签:Restore IP Addresses index ip num res string

题目

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 地址格式。

解题思路

  • DFS 深搜
  • 需要注意的点是 IP 的规则,以 0 开头的数字和超过 255 的数字都为非法的。

参考代码

package leetcode

import (
	"strconv"
)

func restoreIPAddresses(s string) []string {
	if s == "" {
		return []string{}
	}
	res, ip := []string{}, []int{}
	dfs(s, 0, ip, &res)
	return res
}

func dfs(s string, index int, ip []int, res *[]string) {
	if index == len(s) {
		if len(ip) == 4 {
			*res = append(*res, getString(ip))
		}
		return
	}
	if index == 0 {
		num, _ := strconv.Atoi(string(s[0]))
		ip = append(ip, num)
		dfs(s, index+1, ip, res)
	} else {
		num, _ := strconv.Atoi(string(s[index]))
		next := ip[len(ip)-1]*10 + num
		if next <= 255 && ip[len(ip)-1] != 0 {
			ip[len(ip)-1] = next
			dfs(s, index+1, ip, res)
			ip[len(ip)-1] /= 10
		}
		if len(ip) < 4 {
			ip = append(ip, num)
			dfs(s, index+1, ip, res)
			ip = ip[:len(ip)-1]
		}
	}
}

func getString(ip []int) string {
	res := strconv.Itoa(ip[0])
	for i := 1; i < len(ip); i++ {
		res += "." + strconv.Itoa(ip[i])
	}
	return res
}

标签:Restore,IP,Addresses,index,ip,num,res,string
From: https://blog.51cto.com/u_16110811/8129837

相关文章

  • 如何通过TypeScript采集高德图片
    相信大家开车一定都用过导航,高德地图就是一款非常优秀的导航软件,它以精准、高效而文明。今天我就给大家分享一个通过TypeScript简单采集高德图片的示例,可能没什么太大的用处,纯属个人爱好,不喜勿喷哈·~一起来看看吧。```typescriptimportsuperagentfrom'superagent';constprox......
  • OP_REQUIRES failed at save_restore_v2_ops.cc:109 : Permission denied: model/vari
     2021-06-0110:32:15.183997:Wtensorflow/python/util/util.cc:348]Setsarenotcurrentlyconsideredsequences,butthismaychangeinthefuture,soconsideravoidingusing them.2021-06-0110:32:15.639234:Wtensorflow/core/framework/op_kernel.cc:1763]O......
  • 如何同时Ping多个IP地址,一个小技巧节约N小时?
    直接看最后一种ping命令是我们检查网络中最常用的命令,作为网络人员,基本上每天都会用到,可以很好地帮助我们分析和判定网络故障,如果有10设备,100台设备,1000台设备怎么办?一个个ping过去人都要疯掉了,这种情况在大型网络中我们有可能遇到,那怎么办呢?我们今天来看下。一、批量ping网......
  • IPD
    市场调研需求管理 概念阶段——charter计划阶段——(How:解决产品怎么做的问题)。在这个阶段主要制定系统方案和项目的详细计划,评估产品的各种技术方案等开发阶段验证阶段——试制、小批量发布阶段生命周期阶段——产品发布上市之后,就进入到了生命周期阶段。所谓的生命周期......
  • mysql安装步骤(windows版zip包)
    1.官网下载安装包https://cdn.mysql.com//Downloads/MySQL-8.2/mysql-8.2.0-winx64.zip2.在下载后的目录下找到Mysql压缩包并将其解压至自己创建的一个文件夹内(注意:目录名不可以是中文)3.my.ini内容如下,注意路径改成自己的,第5行basedir=、第7行datadir=[mysqld]#设置3306端口port......
  • needle库下载TypeScript程序用HTTP做个爬虫模版
    下面是一个使用needle库进行下载的TypeScript程序,它下载了pinduoduo的内容,并且使用了proxy_host为duoip,proxy_port为8000的爬虫IP。importneedlefrom'needle';//设置爬虫IPneedle.requestDefaults({proxy:{host:'duoip',port:8000}});//......
  • C# treeview 如何遍历MenuStrip的菜单
    需求分析: 数据菜单有四级菜单,需要在程序界面登录的时候遍历菜单的内容开发环境:VSC#winform步骤1:新建一个窗体步骤2:新建一个MenuStrip,并且定义内部的名称步骤3:新建一个Treeview步骤4:开始编程,定义一个参数函数: GetMenu(TreeView V,MenuStrip S)步骤5:编写参数函数的代码......
  • C#中menuStrip1控件详细使用方法
    在C#中,MenuStrip控件用于创建一个菜单栏,允许用户通过点击菜单项来执行相应的操作。MenuStrip提供了一种方便的方式来创建和管理菜单项及其事件处理程序。以下是MenuStrip控件的详细使用方法:在窗体上放置MenuStrip控件:在VisualStudio的窗体设计器中,从工具箱中拖动并放置一个......
  • 发现这个ip有bt下载,所以改路由,让其访问到一个不存在的ip上 route add
    管理员权限cmd发现这个ip有bt下载,所以改路由,让其访问到一个不存在的ip上routeadd-p195.154.181.225mask255.255.255.255127.0.0.2---------------------------------------------生活的意义就是你自己知道你要做什么,明确目标。没有目标,后面都是瞎扯!https://pengcheng......
  • JavaScript 的力量
    JavaScript是一个超越React领域的强大力量。虽然React在现代Web开发中的受欢迎程度是不可否认的,但了解JavaScript的多功能性和实际应用程序是基础。用于事件处理和DOM操作等,JavaScript的统治地位远远超出了React;它是现代网络开发的基石。这些扩展示例展示了其在事件......