今天看到一道简单的面试题:
给定一个只包含数字的字符串,复原它并返回所有可能的 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])
}
}
