您的位置:首页 > 编程语言 > Python开发

LeetCode 93 Restore IP Addresses(Python详解及实现)

2017-08-10 13:57 971 查看
【题目】

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

 

For example:

Given "25525511135",

 

return ["255.255.11.135","255.255.111.35"]. (Order does not matter)

 

给定一个只有数字的字符串,将其转化为合法的IP地址,并存起来。

例如:输入:"25525511135",

输出:["255.255.11.135", "255.255.111.35"](排列顺序不影响)

 

【思路】

这个题可以运用dfs,那么回溯算法的循环和终止条件是什么呢?

         IP地址由四部分构成,可以设置一个变量segment,当segment = 4时,可结束循环,将结果添加到列表中;

         每个部分数值均值0---255之间,因此每次回溯最多需要判断3个元素,即当前元素i---i+2这三位数字。

 

【Python实现】

 

# -*- coding: utf-8 -*-
"""
Created on Thu Aug 10 11:26:03 2017

@author: Administrator
"""

class Solution(object):
def restoreIpAddresses(self, s):
"""
:type s: str
:rtype: List[str]
"""
def dfs(s, segment, res, ip):
if segment == 4:
if s == '':
res.append(ip[1:])
return
for i in range(1,4):
if i <= len(s):
if int(s[:i]) <= 255:
dfs(s[i:],segment+1,res,ip+'.'+s[:i])
if s[0] == '0':
break
res = []
dfs(s, 0, res, '')#segment 初始化为0
return res
if __name__ == '__main__':
S= Solution()
s= "25525511135"
S.restoreIpAddresses(s)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LeetCode Python DFS