题目标题:

  • 判断输入的字符串是不是一个有效的IP地址

详细描述:

请实现如下接口

boolisIPAddressValid(constchar* pszIPAddr)

输入:pszIPAddr 字符串

输出:true 有效的IP地址,false,无效的IP地址

约束

  1. 输入IP为XXX.XXX.XXX.XXX格式

  2. 字符串两端含有空格认为是合法IP

  3. 字符串中间含有空格认为是不合法IP

  4. 类似于 01.1.1.1, 1.02.3.4  IP子段以0开头为不合法IP

  5. 子段为单个0 认为是合法IP,0.0.0.0也算合法IP

C语言代码:

 1 #include "IPAddressValid.h"
2 #include <string.h>
3
4 bool isIPAddressValid(const char* pszIPAddr)
5 {
6 // 请在此处实现
7 if(pszIPAddr == 0 || pszIPAddr == "")
8 return false;
9 char *p=const_cast<char*>(pszIPAddr);
10 char *pre=0;
11 bool flag=true;
12 bool last=false;
13 int pCount=0; //point number;
14 int num=0;
15 while(*p==' ')//不考虑前面的空格
16 p++;
17 //if(*p=='.')
18 // return false;
19 while(*p!='\0'){
20 if (*p != '.'){
21 if(pCount < 3 && (*p>'9'||*p<'0'))
22 return false;
23 if(pCount == 3){
24 if(*p != ' ' && (*p>'9'||*p<'0'))//
25 return false;
26 if(*p == ' ')//第三个'.'后面有空格,应该为结尾的空格
27 last = true;
28 if(last && *p<='9'&&*p>='0')
29 return false;
30 }
31 if(flag)//新的子段开始。
32 pre = p;
33 flag=false;
34 }else{//发现一个"."
35 pCount++;
36 if(!flag){
37 if((p-pre>1&&*pre=='0')||(p-pre>3))//排除子段以0开头,或者子段的长度大于3
38 return false;
39 if(p-pre == 3){
40 num=(*pre-'0')*100;
41 num+=(*(++pre)-'0')*10;
42 num+=(*(++pre)-'0');
43
44 if(num>255)
45 return false;
46 }
47 }else if(p-pre==1){//连续出现两个'.'
48 return false;
49 }else
50 return false;
51 flag=true;//下一个新的子段开始
52 pre=p;
53 }
54 p++;
55 }
56 if (pCount!=3 || *pre=='.'|| (p-pre>1&&*pre=='0'))//如果不是三个子段,或者最后一个字符为'.',或者最后一个子段第一个字符为'0'。
57 return false;
58 num=0;
59 while(*pre<='9'&&*pre>='0'){
60 num=num*10;
61 num=num+(pre[0]-'0');
62
63 pre++;
64 }
65 if(num>255)
66 return false;
67
68 return true;
69 }

华为oj-判断输入的字符串是不是一个有效的IP地址的更多相关文章

  1. 在shell中如何判断字符串是否为有效的IP地址【转】

    转自 在shell中如何判断字符串是否为有效的IP地址_echoisecho_新浪博客http://blog.sina.com.cn/s/blog_53a844e50100xxus.html 近来需要 ...

  2. swift 判断输入的字符串是否为数字

    // 判断输入的字符串是否为数字,不含其它字符 func isPurnInt(string: String) -> Bool { let scan: Scanner = Scanner(stri ...

  3. C# 判断输入的字符串是否只包含数字和英文字母

    /// <summary> /// 判断输入的字符串是否只包含数字和英文字母 /// </summary> /// <param name="input&quo ...

  4. C# .NET 判断输入的字符串是否只包含数字和英文字母

    FROM :   https://www.cnblogs.com/ilookbo/p/4828722.html /// <summary> /// 判断输入的字符串是否只包含数字和英文字母 ...

  5. 华为机试001:字符串最后一个单词的长度(华为OJ001)

    华为机试 字符串最后一个单词的长度 计算字符串最后一个单词的长度,单词以空格隔开. 提交网址: http://www.nowcoder.com/practice/8c949ea5f36f422594b ...

  6. iOS判断输入的字符串是否是纯数字

    主要用于判断输入到TextField的内容是不是数字,比如需要输入电话号码的时候. 网上查看了一些资料,一般都是通过协议. 以下内容来自:http://www.2cto.com/kf/201404/2 ...

  7. Android EditText判断输入的字符串是否为数字(包含小数点)

    有时候项目需要获取EditText所输入的字符串为纯数字(含小数),一般情况下在xml中设置EditText的的属性(我是直接设置digits为数字和小数点,即digits="0123456 ...

  8. python遍历一个网段的ip地址

    def ip2num(ip):#ip to int num lp = [int(x) for x in ip.split('.')] return lp[0] << 24 | lp[1] ...

  9. 无法启动INTERNET连接共享。一个已经用IP地址配置的LAN连接需要自动IP地址

    提问者采纳   很简单 只要把你要共享的连接 192.168.0.1 0改成1 然后就可以共享了 共享后再改回来 就能上了 但是会出现IP冲突的~

随机推荐

  1. 【学习笔记】conda总结

    conda常用命令 conda create -n name python=x.x #创建环境 conda activate name #进入环境 conda deactivate #退出环境 con ...

  2. Shiro精通学习——【第一集:入门】

    入门: main方法直接执行:https://blog.csdn.net/a907691592/article/details/80559904 使用配置文件方式:https://blog.csdn. ...

  3. Python基础之魔术方法(控制属性的访问和设置)

    # 魔术方法--常规方法# 1. __int__ 构造函数# 2. __new__ 在类实例之前就创建了# 3. __iter__ 迭代器# 4. __del__ 析构方法,用来清除释放的对象内存# ...

  4. 【剑指offer】55 - I. 二叉树的深度

    剑指 Offer 55 - I. 二叉树的深度 知识点:二叉树,递归 题目描述 输入一棵二叉树的根节点,求该树的深度.从根节点到叶节点依次经过的节点(含根.叶节点)形成树的一条路径,最长路径的长度为树 ...

  5. Java基础——ArrayList方法全解(字典版)

    引言 在使用集合 ArrayList 的时候,经常使用add.remove等,其他的没用过,甚至没听说过的还有很多.现在在这个教程中,简单的了解一下,不要求全都记下.相当于在你脑袋里建一个索引,就是有 ...

  6. JS_点击事件_弹出窗口_自动消失

    <!doctype html> <html> <head> <meta charset="utf-8"/> <title> ...

  7. .NET 6 预览版 5 发布

    很高兴.NET 6 预览版5终于跟大家见面了.我们现在正处于.NET 6 的后半部分,开始整合一些重要的功能. 例如.NET SDK 工作负载,它是我们.NET 统一愿景的基础,可以支持更多类型的应用 ...

  8. XMAPP搭建DVWA靶机

    1  环境搭建 XMAPP+DVWA (我在win10下搭的环境) 更改了xmapp中Apache的两个端口号: dvwa/config中密钥和端口号按自己情况填好: dvwa/config中文件改为 ...

  9. 只要套路对,薪资直接翻一倍!保姆级Android面试葵花宝典,肝完面试犹如开挂

    跳槽,这在 IT 互联网圈是非常普遍的,也是让自己升职加薪,走上人生巅峰的重要方式.那么作为一个普通的Android程序猿,我们如何才能斩获大厂offer 呢? 疫情向好.面试在即,还在迷茫踌躇中的后 ...

  10. 【学习笔记】Expression表达式目录树

    Expression表达式目录树:一个能拼装能解析的数据结构,语法树. 一.手动拼装表达式目录树 示例1: /// <summary> /// 展示表达式树,协助用的 /// 编译lamb ...