美文网首页
93. 复原 IP 地址

93. 复原 IP 地址

作者: 邦_ | 来源:发表于2022-07-20 09:53 被阅读0次

自己想的。。可能剪枝条件还是不太好。。


func restoreIpAddresses(_ s: String) -> [String] {
        let len = s.count
        var ans = [String]()
        let numArray = Array(s)
        var tempArray = [String]()
        var sumLen = 0
        dfs(0,0,numArray,len,&sumLen,&tempArray,&ans)
        return ans
        
    }
    
    func dfs(_ index:Int, _ bengin:Int,_ numArray:[Character],_ len:Int,_ sumLen:inout Int,_ tempArray:inout [String],_ ans:inout [String]){
        
        //因为只能有四个数
        if index == 4 {
//            //长度不够,肯定不符合要求
            if sumLen == len {
                ans.append(tempArray.joined(separator: "."))
            }
            return
        }
        //每一层可以选择的数字
        for i in bengin..<len {
            var str = ""
            for j in 0..<3 {
               
                if i + j < len {
                    str.append(numArray[i + j])
                    //1位数字的话都可以。。2位数字的话 要大于10 三位数字的话要大于100小于等于255
                    let numValue = Int(str) ?? 0
                    if (j == 2 && numValue <= 255 && numValue >= 100) || ( j == 1 && numValue >= 10) || j == 0{
                        sumLen += str.count
                        tempArray.append(str)
                        dfs(index + 1,i + j + 1,numArray,len,&sumLen,&tempArray,&ans)
                        sumLen -= tempArray.removeLast().count
                        //不用往下找了
                        if j == 2 {
                            return
                        }
                        
                    }
                   
                    
                }
                
                
            }
         
           
            
        }
        
        
        
        
        
        
        
    }











相关文章

网友评论

      本文标题:93. 复原 IP 地址

      本文链接:https://www.haomeiwen.com/subject/wlrsirtx.html