题解 | #验证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) {
        // write code here
        if(isIPv4(IP))return "IPv4";
        else if(isIPv6(IP))return "IPv6";
        else return "Neither";
    }
    private boolean isIPv4(String IP){
        if(IP.indexOf(".") == -1)return false;
        String[] s = IP.split("\\.");
        if(s.length != 4)return false;
        for(int i = 0; i < 4; i++){
            if(s[i].length() == 0)return false;
            if(s[i].length() > 3 || (s[i].charAt(0)=='0' && s[i].length() != 1))return false;
            int num = 0;
            for(int j = 0; j < s[i].length(); j++){
                char c = s[i].charAt(j);
                if(c < '0' || c > '9')return false;
                num = num*10+(c-'0');
            }
            if(num > 255)return false;
        }
        return true;
    }
    private boolean isIPv6(String IP){
        if(IP.indexOf(":") == -1)return false;
        String[] s = IP.split(":", -1);
        if(s.length != 8)return false;
        for(int i = 0; i < 8; i++){
            if(s[i].length() == 0 || s[i].length() > 4)return false;
            for(int j = 0; j < s[i].length(); j++){
                char c = s[i].charAt(j);
                boolean flag = (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F');
                if(!flag)return false;
            }
        }
        return true;
    }
}

/**
在Java中, split() 方法用于将字符串拆分为子字符串数组,根据指定的分隔符来划分原始字符串。在这种情况下,参数 -1 表示将保留原始字符串中的所有尾部空字符串。如果不使用 -1 参数,则默认情况下, split() 方法会删除尾部的空字符串。因此,使用 -1 参数可以确保尾部的空字符串也会被保留在结果数组中。
 */

全部评论

相关推荐

wuwuwuoow:校友好 1.相关课程这行可以删了 2.个人呢技能多看看别人简历怎么写,好的直接抄下来 3.项目看起来可能是团队的圣遗物?有上线吗?QPS 为啥才 300?我想象这个业务应该不复杂,可以在简历中添加如果优化接口提高 QPS 的 4.日志记录做的太复杂了,要考虑目前你的项目体量,日志直接用 log.info 啥的记录就好了,写入到本地文件。引入了太多技术,带来太多复杂性。还有为什么日志需要回滚?日志需要有这么高要求的一致性吗 5.为什么用 MinIO 做冷数据存储?MinIO 更适合做对象存储,而 MySQL 是存储结构化数据,他们的定位是不一样的。如果要存冷数据,一般也是存到 MySQL 中。比如一个线上的 MySQL,和一个做冷数据的 MySQL,可以用上 MyISAM 引擎加快写入性能,甚至不写 MySQL 也行,直接写到文件中 不过我想的是这个场景中,每天真的有这么多数据吗?每天少说也得几万、几十万条数据增长,才考虑冷热数据分离。 6.SpringSecurity 用起来不容易,面试可以问的东西却很多,不建议在简历上写这个 7.不设置 Redis 缓存,假设出现了数据不一致,那该怎么办呢? 8.排版注意一下,比如 minio MinIO,Mysql MySQL 9.再加个项目,看看牛客别人怎么写的,可以写个轮子项目
点赞 评论 收藏
分享
草稿猫编程:查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务