【搞定算法】判断一个字符串是否是一个合法的 IPV4【美团面试题】

博主秋招提前批已拿百度、字节跳动、拼多多、顺丰等公司的offer,可加微信:pcwl_Java 一起交流秋招面试经验,可获得博主的秋招简历和复习笔记。

这题并不难,但是却是很好的手撕代码题。需要注意的是字符串分割的一个细节:

1、如果用 “.” 作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用 String.split(".");

2、如果用 “|” 作为分隔的话,必须是如下写法:String.split("\\|"),这样才能正确的分隔开,不能用 String.split("|");

“.” 和 “|” 都是转义字符,必须得加 "\\";

3、如果在一个字符串中有多个分隔符,可以用 “|” 作为连字符,比如:“a=1 and b =2 or c=3”,把三个都分隔出来,可以用String.split("and|or");

  • 代码实现

public class IsIPV4 {

    public static boolean isIPV4(String str){
        if(str == null || str.length() == 1){
            return false;
        }
        // 注意:用 . 进行分割的时候需要用 \\ 转义
        String[] parts = str.split("\\.");
        if(parts.length != 4){
            return false;
        }
        for(int i = 0; i < parts.length; i++){
            if(Integer.valueOf(parts[i]) < 0 || Integer.valueOf(parts[i]) > 255){
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        System.out.println(isIPV4("111.111.111.111"));    // true
        System.out.println(isIPV4("-1.111.111.111"));     // false
        System.out.println(isIPV4("1111.111.111.111"));   // false
    }
}

 

你可能感兴趣的:(手撕代码)