题解 | #判断两个IP是否属于同一子网#

判断两个IP是否属于同一子网

https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218

package main

import (
	"fmt"
	"strconv"
	"strings"
)

func main() {
    a:=""
    b:=""
    c:=""
    fmt.Scan(&a)
    fmt.Scan(&b)
    fmt.Scan(&c)
    var str1=strings.Split(a, ".");
    var str2=strings.Split(b, ".");
    var str3=strings.Split(c, ".")
    isSuceess:=0
    isvlan:=0
    if len(str1)==4 && len(str2)==4 && len(str3)==4{
        for i:=0;i<4;i++{
            vlan,err :=strconv.Atoi(str1[i])
            if err!=nil{
                 fmt.Print(1);
                 return;
            }
            ip1,err :=strconv.Atoi(str2[i])
            if err!=nil{
                 fmt.Print(1);
                 return;
            }
            ip2,err :=strconv.Atoi(str3[i])
            if err!=nil{
                 fmt.Print(1);
                 return;
            }
            if ip1>255||ip1<0{
                  fmt.Print(1);
                 return;
            }
              if ip2>255||ip2<0{
                  fmt.Print(1);
                 return;
            }
            if vlan>0&&isvlan>0{
                  fmt.Print(1);
                 return;
            }

              if vlan>255||vlan<0{
                  fmt.Print(1);
                 return;
            }else if(vlan!=255){
                isvlan=1
            }
             

            if ((255-vlan)&(256-vlan)!=0){
                  fmt.Print(1);
                 return;
            }
            if ip1&vlan!=ip2&vlan{
                isSuceess=1
            }
            
        }
        if (isSuceess==1) {

             fmt.Print(2);
                return;
        }
        fmt.Print(0);

    }else{
        fmt.Print(1)
    }
    

}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务