LeetCode 93. Restore IP Addresses 20170705 部分之前做了沒寫的題目
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地址組合
解題思路:同樣還是深度優先的辦法。先看看終止條件,先用一個count來保存IP地址有幾段。有效的IP地址總共有四段,所以當count等於4的時候才是有效的,且當count等於4時,該字符串應該已經讀完了,所以還加一個條件是如果s==‘‘,此時添加臨時保存IP地址的字符串到結果集合中。這裏只返回從下標為1開始的字符串是因為根據後面的代碼,會在IP地址的每一段前面加一個點,第一段前面的點應該被省略。下面的dfs循環,每一段IP地址都是小於255的,所以每一段地址有可能是1位、2位、3位數字,因此在每一段地址的時候都分成1、2、3位數字三種情況,且這些數字都要小於255,如果符合條件,則下一個循環中原數組s舍棄掉該段IP地址的數字,在臨時保存IP地址字符串中加一個點和該段的數字。如果碰到當前s的第一位是0,則該段IP地址只可能是0,就不需要再作1、2、3位的循環了,直接跳出循環。
class Solution:
def restoreIpAddresses(self, s):
"""
:type s: str
:rtype: List[str]
"""
def dfs(s, count, List):
if count == 4:
if s == ‘‘:
A.append(List[1:len(List)])
return
for i in range(1, 4):
if i <= len(s):
if int(s[0:i]) <= 255:
dfs(s[i:len(s)], count+1, List+‘.‘+s[0:i])
if s[0] == ‘0‘: break
A = []
dfs(s, 0, ‘‘)
return A
LeetCode 93. Restore IP Addresses 20170705 部分之前做了沒寫的題目