093._restore_ip_addresses.md 1.6 KB
Newer Older
K
KEQI HUANG 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
###93. Restore IP Addresses

题目:

<https://leetcode.com/problems/restore-ip-addresses/>


难度:

Medium


基本思路已达到,等待AC之路

结果AC之路还是比较漫长的,因为不允许前缀为0困扰了一下

```
class Solution(object):
    def restoreIpAddresses(self, s):
        """
        :type s: str
        :rtype: List[str]
        """
        self.res = []
        self.singgleAddresses([],s,4)
        for i in range(len(self.res)):
            self.res[i] = '.'.join(str(j) for j in self.res[i])
        return self.res
            
        
        
    def singgleAddresses(self, curRes, s, k):
        """
        :type s: str
        :rtype: List[str]
        """
        if len(s) == 0 and k == 0:
            if curRes not in self.res:
                self.res.append(curRes)
        if len(s) == 0 or k < 0:
            return
        else:
            if self.between0And255(s[:1]):
                self.singgleAddresses(curRes + [int(s[:1])], s[1:], k-1) 
            if self.between0And255(s[:2]):
                self.singgleAddresses(curRes + [int(s[:2])], s[2:], k-1)  
            if self.between0And255(s[:3]):
                self.singgleAddresses(curRes + [int(s[:3])], s[3:], k-1) 
            
    def between0And255(self,s):
        #前缀不允许为0
        if int(s) == 0 :
            if len(s) == 1 :
                return True
            else:
                return False
                
        if int(s) > 0 and s[0] == '0':
            return False
        if int(s) > 0 and int(s) <= 255:
            return True
        return False
                
```