题解 | #验证IP地址#

验证IP地址

https://www.nowcoder.com/practice/55fb3c68d08d46119f76ae2df7566880

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 验证IP地址
     * @param IP string字符串 一个IP地址字符串
     * @return string字符串
     */
    public String solve (String IP) {
        System.out.println(IP);
        String[] ipv4 = IP.split("\\.");
        if (ipv4.length == 4) {
            for (String s : ipv4) {
                if (s.length() < 1) {
                    return "Neither";
                }
                if (s.startsWith("0") && s.length() > 1) {
                    return "Neither";
                }
                for (char c : s.toCharArray()) {
                    if (!Character.isDigit(c)) {
                        return "Neither";
                    }
                }
                if (s.length() > 3 || Integer.parseInt(s) > 255) {
                    return "Neither";
                }
            }
            return "IPv4";
        }
        String[] ipv6 = IP.split(":", -1);
        if (ipv6.length == 8) {
            for (String s : ipv6) {
                if (s.length() < 1 || s.length() > 4) {
                    return "Neither";
                }
                for (char c : s.toCharArray()) {
                    if (Character.isAlphabetic(c) && Character.toLowerCase(c) > 'f') {
                        return "Neither";
                    }
                }
            }
            return "IPv6";
        }
        return "Neither";
    }
}

有两个坑需要注意一下:

  • split(".")无效,需要split("\\.")
  • split(".")如法分割1.1.1.1.或者1:1:1:1:这样最后还有一个分隔符的情况,需要split(".", -1),传入参数-1才行
全部评论

相关推荐

10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务