最近在笔试的时候遇到碰一道算法题,

要求判断一个字符串是不是合法的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地址的更多相关文章

  1. 判断一个字符串是否是合法IP地址

    # -*- coding: utf-8 -*- """ @File:test06_判断ip地址是否合法.py @E-mail:364942727@qq.com @Time ...

  2. python实现判断一个字符串是否是合法IP地址

    #!usr/bin/env python #encoding:utf-8 ''''' __Author__:沂水寒城 功能:判断一个字符串是否是合法IP地址 ''' import re def jud ...

  3. 判断一个字符串是否为有效ip地址

    bool f (const char *s) { int s1,s2,s3,s4; ) { return false; } if ((s1 & 0xffffff00) || (s2 & ...

  4. 负载均衡实现,一个域名对应多个IP地址

    负载均衡实现,一个域名对应多个IP地址 - 宏宇 - 博客园 https://www.cnblogs.com/cuihongyu3503319/archive/2012/07/09/2583129.h ...

  5. 在CentOS 7上给一个网卡分配多个IP地址

    有时你也许想要给一个网卡多个地址.你该怎么做呢?另外买一个网卡来分配地址?在小型网络中其实不用这么做.我们现在可以在CentOS/RHEL 7中给一个网卡分配多个ip地址.想知道怎么做么?好的,跟随我 ...

  6. 判断一个字符串是否为合法IP

    输入任意一个字符串,判断是否为合法IP bool IsIPAddress(const char * str){ //先判断形式是否合法, //检查是否只包含点和数字 ; str[i] != '\0'; ...

  7. JAVA 判断一个字符串是不是一个合法的日期格式

    原文:http://www.cnblogs.com/xdp-gacl/p/3548307.html 最近开发公司的项目,一直找不到合适的正则表达式可以判断一个字符串是否可以转成日期,今天发现可以采用S ...

  8. 【转】一个域名对应多个IP地址,接下来系统是依据什么决定使用哪个IP地址的?

    例如下图所示:nslookup http://www.sina.com.cn返回了多个IP地址,当使用curl通过域名进行访问时,则自动选择了其中一个地址进行访问,这个选择的过程里发生了什么事情? 绝 ...

  9. 负载均衡实现,一个域名对应多个IP地址【转载】

    使用负载均衡实现,传统和常规做法,其他方式需要特殊处理.(dns轮询,或者自己做解析)1.一个域名设定多个dns服务或者服务器进行解析,同一个域名的每个解析都指向不同的ip地址,这样应答快的dns优先 ...

随机推荐

  1. Maven打包的三种方式(转)

    Maven可以使用mvn package指令对项目进行打包,如果使用Java -jar xxx.jar执行运行jar文件,会出现"no main manifest attribute, in ...

  2. Flume - Kafka日志平台整合

    1. Flume介绍 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据:同时,Flume提供 ...

  3. JS中原始值和引用值的储存方式

    在ECMAscript中,变量可以存放两种类型的值,即原始值和引用值 原始值指的是代表原始数据类型的值,也叫基本数据类型,包括:Number.Stirng.Boolean.Null.Underfine ...

  4. intellij IDEA配置Tomcat

    第一步:点击上方File选项找到Setting,在文本框中输入Tomcat,找到之后点击右下角的OK 第二步:再次找到Setting,在文本框中输入Application Servers找到后,单击 ...

  5. poj supermaket (贪心)

    http://poj.org/problem?id=1456 #include<cstring> #include<iostream> #include<algorith ...

  6. OpenStreetMap、googleMap等经纬度和行列号之间相互转化

    # OpenStreetMap经纬度转行列号 def deg2num(lat_deg, lon_deg, zoom): lat_rad = math.radians(lat_deg) n = 2.0 ...

  7. MySQL使用和操作总结

    简介 MySQL是一种DBMS,即它是一种数据库软件.DBMS可分为两类:一类是基于共享文件系统的DBMS,另一类是基于客户机——服务器的DBMS.前者用于桌面用途,通常不用于高端或更关键应用. My ...

  8. JQuery代码实现上拉加载(不使用插件)

    <script type="text/javascript"> $(window).scroll(function() { //已经滚动到上面的页面高度 var sl_ ...

  9. js版九宫格拼图与启发式搜索(A*算法)

    九宫格拼图游戏大家都很熟悉,这里给大家如介绍何应用状态空间搜索的方式求解拼图的最佳路径和一个游戏dome及自动求解方法: 本文分web版游戏的实现和启发式搜索算法两部分: 先看dome,直接鼠标点击要 ...

  10. JavaWeb学习笔记三 Servlet

    Servlet 是运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求.响应给浏览器的动态资源.但servlet的实质就是java代码,通过java的API,动态的向客户 ...