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

要求判断一个字符串是不是合法的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. jQuery中的ajax的相关方法

    JQuery对Ajax操作进行了封装,$.ajax()方法属于最底层的方法,第2层是load().$.get().$.post()方法,第3层是$.getScript()和$.getJSON()方法. ...

  2. vue的图片上传

    转载  代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  3. 笔记:Struts2 文件上传和下载

    为了上传文件必须将表单的method设置为POST,将 enctype 设置为 muiltipart/form-data,只有设置为这种情况下,浏览器才会把用户选择文件的二进制数据发送给服务器. 上传 ...

  4. sentinel监控redis高可用集群(一)

    一.首先配置redis的主从同步集群. 1.主库的配置文件不用修改,从库的配置文件只需增加一行,说明主库的IP端口.如果需要验证的,也要加多一行,认证密码. slaveof 192.168.20.26 ...

  5. python装饰器使用

    看了不少python关于装饰器文章,觉得还挺实用,发贴来mark一下(以前做笔记总会长时间不看就忘记,放这里应该不会忘了吧 - -) 先来看一个简单的知识点: def a(): print(" ...

  6. c++ --> 重载、重写(覆盖)和隐藏的区别

    重载.重写(覆盖)和隐藏的区别 一.重载 重载从overload翻译过来,是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心 ...

  7. Algorithm --> 6174问题

    6174问题 假设一个各位数字不相同的四位数,把所有数字从大到小排序后得到a, 从小到大排序后得到b,然后用a-b替换原来这个数,继续操作.例如,从1234出发,依次有4321-1234=3078,8 ...

  8. java 二叉树排序

    1 class BinaryTree{ 2 class Node{ 3 private Comparable data; 4 private Node left; 5 private Node rig ...

  9. Ubuntu如何配置SSH免密登录

    前言 在搭建hadoop集群时,需要主机和副机之间实现SSH免密登录 一.环境准备 1.ubuntu两台 二.安装SSH 1.首先检测一下本机有没有安装SSH服务,如果没有任何打印说明未安装 sudo ...

  10. cocos对lua代码加密

    1.0 cocos luacompile 用法 我用的普通的cocos2d lua,没用quick,quick好像可以对整个资源包括图像和音频都加密,打包成zip.但我没用quick.看了下luaco ...