判断一个字符串是否是Ip地址

面试的一道算法题

 public class Test_ip {
 2     //程序入口
 3     public static void main(String[] args) {    
 4         Solution s = new Solution();    // 业务逻辑放在Solution类里面
 5         //String test_str = "12.34.56.67";
 6         String test_str = "256.34.56.67";    // 待解决的字符串
 7         boolean res = s.test_ip(test_str);    //调用判断方法
 8         System.out.println(res);    //输出结果
 9     }
10 }
11 
12 class Solution{
13     /**
14      * 判断一个字符串是否是一个合法的ip地址:
15      *    1 首先检查字符串的长度 最短应该是0.0.0.0 7位 最长 000.000.000.000 15位
16      *    2 尝试按.符号进行拆分     拆分结果应该是4段
17      *    3 查看拆分到的每一个子字符串,应该都是纯数字
18      *    4 对拆分结果转成整数 判断 应该是0到255之间的整数
19      *    5 经过各种磨砺之后 挺过来了!!!返回true
20      */
21     public boolean test_ip(String str){
22         // 1 首先检查字符串的长度 最短应该是0.0.0.0 7位 最长 000.000.000.000 15位
23         if(str.length()<7 || str.length() >15) return false;    // 如果长度不符合条件 返回false
24         
25         // 2 尝试按.符号进行拆分     拆分结果应该是4段
26         String[] arr = str.split("\\.");
27         if( arr.length != 4 )    return false;    //如果拆分结果不是4个字串 返回false
28         
29         // 3 查看拆分到的每一个子字符串,应该都是纯数字
30         for(int i = 0 ; i <4 ; i++ ){
31             for(int j = 0; j'0' && temp< '9' ) ) return false;    //如果某个字符不是数字就返回false
34             }
35         }
36         
37         // 4 对拆分结果转成整数 判断 应该是0到255之间的整数
38         for(int i = 0 ; i<4;i++){
39             int temp = Integer.parseInt( arr[i] );
40             if( temp<0 || temp >255)    return false;    //如果某个数字不是0到255之间的数 就返回false
41         }
42         
43         // 5 经过各种磨砺之后 挺过来了!!!返回true
44         return true;
45     }
46 }

你可能感兴趣的:(判断一个字符串是否是Ip地址)