BM85 验证IP地址(字符串)

这篇文章介绍了Java中的Solution类,包含isIPv4和isIPv6方法,用于检查输入的字符串是否符合IPv4和IPv6地址的格式。solve方法根据输入判断是IPv4、IPv6还是两者都不是。
摘要由CSDN通过智能技术生成

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 验证IP地址
     * @param IP string字符串 一个IP地址字符串
     * @return string字符串
     */

    public boolean isIPv4(String IP){
        //没有'.'
        if(IP.indexOf('.') == -1) return false;

        String[] ones = IP.split("\\.");
        if(ones.length != 4) return false;

        for(int i = 0; i < ones.length; i++){
            if(ones[i].length() == 0) return false;
            
            
            if(ones[i].length() < 0 || ones[i].length() > 3 || (ones[i].charAt(0) == '0' && ones[i].length() != 1)) return false; 
            int num = 0;
            for(int j = 0; j < ones[i].length(); j++){
                char c = ones[i].charAt(j); 
                if(c < '0' || c > '9') return false;
                num = num * 10 + (int)(c - '0');
                if(num < 0 || num > 255) return false; 
            }
        }

        return true;
    }


    public boolean isIPv6(String IP){
        if(IP.indexOf(":") == -1) return false;

        String[] ones = IP.split(":",-1);
        if(ones.length != 8) return false;

        for(int i = 0; i < ones.length; i++){
            if(ones[i].length() == 0 ||ones[i].length() > 4) return false;

            for(int j = 0; j < ones[i].length(); j++){
                char c = ones[i].charAt(j);
                boolean expr = (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f');
                
                if(!expr)
                    return false;
            }
        }
        return true; 
    }
    
    public String solve (String IP) {
        // write code here
        if(isIPv4(IP)){
            return "IPv4";
        }else if(isIPv6(IP)){
            return "IPv6";
        }

        return "Neither";
    }
}

在这里插入图片描述

  • 14
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值