后台笔试题复原IP

今天看到一道简单的面试题:

给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。

闲着写了一下,记录下来,感觉要找不到工作了。

package main

import (
    "fmt"
    "strconv"
)

func isValid(inputStr string) bool{
    if len(inputStr)==0 || len(inputStr)>3{
        return false
    }
    r,err:=strconv.ParseInt(inputStr,10,0)
    if err!=nil{
        return false
    }
    return r>=0 && r<=255
}

func nextEle(inputStr,tmpStr string,eleLeft int,result []string) []string{
    if eleLeft<=0{
        //do nothing
    }else if eleLeft==1{
        if(isValid(inputStr)){
            result=append(result,tmpStr+"."+inputStr)
        }
    }else{
        if(tmpStr!=""){
            tmpStr=tmpStr+"."
        }
        if isValid(inputStr[:1]){
            result=nextEle(inputStr[1:],tmpStr+inputStr[:1],eleLeft-1,result)
        }
        if isValid(inputStr[:2]){
            result=nextEle(inputStr[2:],tmpStr+inputStr[:2],eleLeft-1,result)
        }
        if isValid(inputStr[:3]){
            result=nextEle(inputStr[3:],tmpStr+inputStr[:3],eleLeft-1,result)
        }
       
    }
    return result
}

func main() {
    inputStr:="25525511135"
    var result []string
    result=nextEle(inputStr,"",4,result)
    for i:=0;i<len(result);i++{
        fmt.Println(result[i])
    }
}