ip地址
Posted liaogan-1110
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ip地址相关的知识,希望对你有一定的参考价值。
最近在笔试的时候遇到碰一道算法题,
要求判断一个字符串是不是合法的ip地址。
将我的思路发出来分享一下,不一定正确,也不一定是最优的方法。希望能分享一些交流
要求用java或者c来实现,我的java代码:
- public class Test_ip
- //程序入口
- public static void main(String[] args)
- Solution s = new Solution(); // 业务逻辑放在Solution类里面
- //String test_str = "12.34.56.67";
- String test_str = "256.34.56.67"; // 待解决的字符串
- boolean res = s.test_ip(test_str); //调用判断方法
- System.out.println(res); //输出结果
- class Solution
- /**
- * 判断一个字符串是否是一个合法的ip地址:
- * 1 首先检查字符串的长度 最短应该是0.0.0.0 7位 最长 000.000.000.000 15位
- * 2 尝试按.符号进行拆分 拆分结果应该是4段
- * 3 查看拆分到的每一个子字符串,应该都是纯数字
- * 4 对拆分结果转成整数 判断 应该是0到255之间的整数
- * 5 经过各种磨砺之后 挺过来了!!!返回true
- */
- public boolean test_ip(String str)
- // 1 首先检查字符串的长度 最短应该是0.0.0.0 7位 最长 000.000.000.000 15位
- if(str.length()<7 || str.length() >15) return false; // 如果长度不符合条件 返回false
- // 2 尝试按.符号进行拆分 拆分结果应该是4段
- String[] arr = str.split("\\.");
- if( arr.length != 4 ) return false; //如果拆分结果不是4个字串 返回false
- // 3 查看拆分到的每一个子字符串,应该都是纯数字
- for(int i = 0 ; i <4 ; i++ )
- for(int j = 0; j<arr[i].length();j++)
- char temp = arr[i].charAt(j);
- if(!( temp>‘0‘ && temp< ‘9‘ ) ) return false; //如果某个字符不是数字就返回false
- // 4 对拆分结果转成整数 判断 应该是0到255之间的整数
- for(int i = 0 ; i<4;i++)
- int temp = Integer.parseInt( arr[i] );
- if( temp<0 || temp >255) return false; //如果某个数字不是0到255之间的数 就返回false
- // 5 经过各种磨砺之后 挺过来了!!!返回true
- return true;
以上是关于ip地址的主要内容,如果未能解决你的问题,请参考以下文章