package main
import (
"strconv"
"strings"
)
/**
*
* @param s string字符串
* @return string字符串一维数组
*/
func restoreIpAddresses( s string ) []string {
if len(s)<4||len(s)>12{return nil}
result:=[]string{}
ip:=[]string{}
for i:=0;i<3;i++{
if isRange(s[:i+1]){
ip=[]string{s[:i+1]}
result=append(result, bt(s[i+1:],1,ip)...)
}
}
return result
}
func bt(s string,level int,ip []string)[]string{
if len(s)==0{return nil}
if level==3{
if isRange(s){
ip=append(ip, s)
return []string{strings.Join(ip,".")}
}else{
return nil
}
}
result:=[]string{}
for i:=0;i<3&&i<len(s);i++{
if isRange(s[:i+1]){
ip=append(ip,s[:i+1])
result=append(result, bt(s[i+1:],level+1,ip)...)
ip=ip[:len(ip)-1]
}
}
return result
}
func isRange(s string)bool{
if len(s)>3{return false}
if len(s)>1&&s[0]=='0'{return false}
num,_:=strconv.Atoi(s)
return num>=0&&num<=255
}