面试的一道算法题
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<arr[i].length();j++){
32 char temp = arr[i].charAt(j);
33 if(!( temp>'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 }