[华为机试练习题]5.IP地址推断有效性
生活随笔
收集整理的這篇文章主要介紹了
[华为机试练习题]5.IP地址推断有效性
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
推斷輸入的字符串是不是一個有效的IP地址
具體描寫敘述:
請實現例如以下接口
boolisIPAddressValid(constchar* pszIPAddr)
輸入:pszIPAddr 字符串
輸出:true 有效的IP地址,false,無效的IP地址
約束
輸入IP為XXX.XXX.XXX.XXX格式
字符串兩端含有空格覺得是合法IP
字符串中間含有空格覺得是不合法IP
相似于 01.1.1.1, 1.02.3.4 IP子段以0開頭為不合法IP
子段為單個0 覺得是合法IP,0.0.0.0也算合法IP
知識點: 字符串
題目來源: 111
練習階段: 中級
代碼
/*--------------------------------------- * 日期:2015-06-25 * 作者:SJF0115 * 題目:IP地址推斷有效性 * 來源:華為上機 -----------------------------------------*/ #include <iostream> #include <cstring> using namespace std;bool isIPAddressValid(const char* pszIPAddr) {if(pszIPAddr == NULL){return false;}//ifint size = strlen(pszIPAddr);// 去除前導0int start = 0;while(pszIPAddr[start] == ' '){++start;}//while// 去除后導0int end = size - 1;while(pszIPAddr[end] == ' '){--end;}//whileint num = 0;int pointCount = 0;int first = start;for(int i = start;i <= end+1;++i){if(pszIPAddr[i] >= '0' && pszIPAddr[i] <= '9'){num = num * 10 + pszIPAddr[i] - '0';}//ifelse if(pszIPAddr[i] == '.' || i == end + 1){if(i == start || (pszIPAddr[i-1] < '0' || pszIPAddr[i-1] > '9')){return false;}// 驗證.個數if(pszIPAddr[i] == '.'){++pointCount;if(pointCount > 3){return false;}//if}//if// 驗證數據if(num > 255 || num < 0){return false;}//if// 以0開頭且不為0 比如:023if(num != 0 && pszIPAddr[first] == '0'){return false;}//iffirst = i+1;num = 0;}//elseelse{return false;}//else}//forif(pointCount != 3){return false;}return true; }總結
以上是生活随笔為你收集整理的[华为机试练习题]5.IP地址推断有效性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为FusionCube从融合到超融合
- 下一篇: Linux字符设备驱动框架