相关文章推荐
  • 需要在0~255之间
  • 不能有前导0,如02、002不合法(但只有一个0为合法)
  • 不能为空

使用三个参数 s,cell,IPs
s :剩余的还未使用的字符串
cell :本次递归已经生成的ip地址数组,内含0-4个合法的数字
IPs :存放所有已生成的合法ip数组

递归结束的条件
cell 中有4个合法的数字,且 s 中没有剩余的数字,则把 cell 加入 IPs 中,退递归

递归中的操作

从字符串首部开始,循环检查1~3个连续的数字 :

  1. 若当前的数字合法,把该数字加入 cell
  2. s 中剩下的数字继续递归
  3. 递归结束后,把刚才加入 cell 的数字移出(回溯)
class Solution:
	# 判断当前数字是否合法
    def isOK(self, s):
        if not s: #不能为空
            return False
        if len(s) > 1 and s[0] == '0': #不能有前导0
            return False
        if int(s) > 255: #不能大于255
            return False
        return True
	# 根据4个数字,生成带点的ip地址字符串
    def makeIP(self,s):
        ip=''
        for i in range(3):
            ip+=s[i]+'.'
        return ip+s[-1]
	# dfs递归回溯
    def dfsIP(self, s, cell, IPs):
        if len(cell) == 4 and not s: # 已有4个数字,且没有剩下未使用的数字
            IPs.append(self.makeIP(cell))
            return
        # 取长度1-3的数字检查
        for i in range(0, len(s)):
            if i == 3:
                break
            # 若合法,加入cell
            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
 
推荐文章