题目标题:

  • 判断输入的字符串是不是一个有效的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. 微信小程序云开发-云函数-初始化云函数环境

    一.新建云函数文件夹 新建的云函数文件夹,命名为cloud,该文件夹一定要与pages文件夹同级.此时该文件夹的前面没有云朵的标识.  二.配置project.config.json文件 在proje ...

  2. 基于小熊派Hi3861鸿蒙开发的IoT物联网学习【五】

    BearPi-HM_Nano开发板鸿蒙OS内核编程开发--消息队列 什么是消息队列?        答:消息队列中间件是分布式系统中重要的组件,主要解决应用耦合.异步消息.流量削锋等问题.实现高性能. ...

  3. python 之爬虫基本流程

    python 之爬虫基本流程 一 用户获取网络数据的方式: 方式1:浏览器提交请求--->下载网页代码--->解析成页面 方式2:模拟浏览器发送请求(获取网页代码)->提取有用的数据 ...

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

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

  5. java正则匹配字符串例子

    import java.util.regex.Matcher;import java.util.regex.Pattern; public class sss { public static void ...

  6. 大数据学习(18)—— Flume介绍

    老规矩,学习新东西先上官网瞅瞅Apache Flume Flume是什么 Flume是一个分布式.可靠的大规模高效日志收集.汇聚和传输的这么一个服务.它的架构基于流式数据,配置简单灵活.它具备可调节的 ...

  7. 比@EnableMongoAuditing功能强大的实现

    问题出现 以前通过@EnableMongoAuditing.@CreateDate.@LastModifiedDate进行实体类创建时间.修改时间的自动管理. 但为了实现多数据源的管理以及切换,自己覆 ...

  8. 使用 C++ WinRT 组件

    创建 C++ WinRT 组件 通过 Cpp/WinRT 项目模板创建一个 WinRT 组件工程 CppWinrtComponent.vcxproj,主要接口定义如下: namespace CppWi ...

  9. MFC发送自定义消息

    1.在窗口的头文件中声明: afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); 2.在cpp的BEGIN_MESSAGE_MAP和EN ...

  10. idea构建servlet程序

    1 新建maven项目 勾选maven_web模板 2 idea加载后应是如图所示 3 在main目录下新增两个文件夹,一个java 设置为源码根目录,另一个是resources 设置为源目录 4 在 ...