-
需要在0~255之间
-
不能有前导0,如02、002不合法(但只有一个0为合法)
-
不能为空
使用三个参数
s,cell,IPs
s
:剩余的还未使用的字符串
cell
:本次递归已经生成的ip地址数组,内含0-4个合法的数字
IPs
:存放所有已生成的合法ip数组
递归结束的条件
:
cell
中有4个合法的数字,且
s
中没有剩余的数字,则把
cell
加入
IPs
中,退递归
递归中的操作
:
从字符串首部开始,循环检查1~3个连续的数字 :
-
若当前的数字合法,把该数字加入
cell
-
将
s
中剩下的数字继续递归
-
递归结束后,把刚才加入
cell
的数字移出(回溯)
class Solution:
def isOK(self, s):
if not s:
return False
if len(s) > 1 and s[0] == '0':
return False
if int(s) > 255:
return False
return True
def makeIP(self,s):
ip=''
for i in range(3):
ip+=s[i]+'.'
return ip+s[-1]
def dfsIP(self, s, cell, IPs):
if len(cell) == 4 and not s:
IPs.append(self.makeIP(cell))
return
for i in range(0, len(s)):
if i == 3:
break
if self.isOK(s[:i + 1]):
cell.append(s[:i + 1])
self.dfsIP(s[i + 1:], cell, IPs)
cell.pop()
def restoreIpAddresses(self, s):
cell, IPs = [], []
self.dfsIP(s, cell, IPs)
return IPs
这题的官方难度是Medium,点赞1296,反对505,通过率35.4%。从各项指标来说看起来有些中规中矩,实际上也的确如此。这道题的解法和立意都有些显得新意不足,但总体来说题目的质量还是可以的,值得一做。
给定一个由数字组成的字符串,我们希望通过这个字符串得到所有有效ip地址的组合。对于一个有效的ip地址而言,它应该有4个数字组成,每一个数字的范围在0到255之间。
一个字符串可能可以转化成多个ip地址,我们需要存储下来所有可以成立的情况。
Input: “25525511135”
Output: [“255.255.11.135”, “255.255.111.35”]
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。IP 地址库中 IP 地址的保存格式一般有两种,一种是点分十进制形式(192.168.1.1),另一种是数字形式(3232235777),应用中,经常需要在这两种格式之间做转换。IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。
import socket
import struct
return socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
随机生成IPv6地址:
':'.join('{:x}'.format(random.randint(0, 2**16 - 1
例子:IP:192.168.1.10方法一:In [1]: bin(192)Out[1]: '0b11000000'In [2]: bin(168)Out[2]: '0b10101000'In [4]: bin(1)Out[4]: '0b1'In [5]: bin(10)Out[5]: '0b1010'所以192.168.1.10 转换成整数:3232235786In [6]: 0b1100000...
how can i convert a string ip address to a decimal number. e.g I have a data bytes= b'363,3,1778952384,7076' , here 1778952384 is my ip address and 7076 is my port. How can I convert my IP address to ...
data1 = bin(int(input()))[2:].rjust(32,"0") #整数转IP地址
temp = []
caozuo = [temp.append(int(data.
Integer.parseInt() 是Integer包装类下的一个方法,作用是将()内的String类型字符串转化为int类型。注意:ip地址是由四段数字组成的数字序列,格式如 “x.x.x.x”,其中 x 的范围应当是 [0,255]。返回[“255.255.22.135”, “255.255.221.35”]. (顺序没有关系)返回值: [“255.255.22.135”,“255.255.221.35”]数据范围:字符串长度 0≤n≤120 \le n \le 120≤n≤12。
互联网上分布着很多设备,如电脑、手机、智能手表等。设备与设备之间会互相通信,如你给朋友发送一条微信语音信息,其实就是你的手机在与朋友的手机进行通信。
但是,这条信息为什么会准确到达你朋友的手机,而不是其他设备?这是因为网络上的每台设备都有一个唯一的网络地址。如果把网络信息看作日常生活中的信件,网络地址就是信件上的收件人地址,有了这个地址,信息就能准确到达网络上的某一设备。
网络地址有不同类型,如 MAC 地址、IP 地址、URL 等,本关针对的是 IP 地址。IP 地址目前主要有两个版本:I..
在工作中需要将ip地址从整数(如168442432)到以点号分隔的字符串类型(如10.10.58.64)之间的转换,或者反过来从字符串到整数的转 换。这个转换可以使用的方式很多,例如,linux下的C语言编程,调用inet_aton等函数就可以方便的实现(参考man inet_aton)。不过,脚本语言可以提供更加快速的方式实现,在python中,如下:
首先: import socket im...
# str to dict
str_dict = '''{'key1': 'value1', 'key2': 'value2' }'''
getdict = ast.literal_eval(str_dict)
print('''type of str_dict: ''', type(str_dict))
print('''type of getdict: ''', type