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

Restore IP Address Leetcode Python

2015-01-15 09:00 330 查看
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)

这道题目解法与求subarray一样,但并非NP问题。解法是定义一个递归,在递归里面循环递归四次即可。判断可行条件,IP每个段的值小于等于255 并且数值前面没有0,比如025 为错误的。解法是s==str(int(s)) 如果有0两者不等。

This problem can be categorized as finding sub array from a big array. But here is a minor difference between this problem and the subset problem, we just need to traverse 4 times because IP has 4 parts split by 3 dots. Another import thing we need to know
is that for every part of the IP, we need to make sure the value is no greater than 255 and there is no 0 in front it,ex 025 is not valid. This can be solved by using s==str(int(s)).

The code is as follow

class Solution:
# @param s, a string
# @return a list of strings
def getIP(self,valuelist,solution,s,start):
if start==3:
if len(s)>0:
if int(s)<=255 and s==str(int(s)):
solution.append(valuelist+s)
return
for index in range(1,4):
if index<len(s) and int(s[:index])<=255 and s[:index]==str(int(s[:index])):
self.getIP(valuelist+s[:index]+'.',solution,s[index:],start+1)

def restoreIpAddresses(self, s):
solution=[]
self.getIP('',solution,s,0)
return solution

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息