判断字符串是否为合法ip
来源:互联网 发布:plsql导入数据和表结构 编辑:程序博客网 时间:2024/05/21 15:43
周三去B商搜面试,连着面了三面,对体力也是一个不小的考验,三面也是技术面,其中代码题为判断字符串是否为合法IP
之前IP的题写过32位int转换为IP的,还好数字串判断是否能成为IP的DFS,字符串判断IP的还没遇见过
经过思考之后,先确定方向,是一道字符串处理的题,合法ip的话主要有以下几点:
1.合法IP只有'.'和'1-9'其他的字符都干掉
2.IP串为四个数字3个'.'不符合的干掉
3.连续的'..'干掉
4.数字在0-255以外的干掉
5.非0数字前有0的也干掉
然后开始手写,之前写的时候没考虑到010的情况,后来发现了加了一个逻辑判断,总的来说思路没啥问题,附上代码:
bool isValidIP(char* str){if (NULL==str){return false;}bool preIsNum=false;int numOfPoint=0;int numOfNum=0;char *p=str;while ('\0'!=*p&&numOfPoint<=3&&numOfNum<=4){if('.'!=*p&&(*p<'0'||*p>'9')){return false;}if('.'==*p){ if (!preIsNum) { return false; } else { preIsNum=false; numOfPoint++; } p++;}else{int tmp=0;bool prevHasZero=0;while ('\0'!=*p&&*p>='0'&&*p<='9'){if (prevHasZero==true){return false;}if (*p=='0'&&tmp==0){ prevHasZero=true;}tmp=tmp*10+(*p-'0');p++;}if (tmp<0||tmp>255){return false;}numOfNum++;preIsNum=true;}}if (numOfPoint==3&&numOfNum==4){return true;}else{return false;}}
附上检查代码和结果:
int main(){char a[][10] ={"0","000000"};char *b[] ={"","a","000","0.123.456.2","000.000.0.0",".0.0.3.2",".0.0.0.0","1.1.256.1","1.2.a.2","00.0.0.0","0.00.0.0","010.010.010.010"};char *c[] ={"0.0.0.0","1.1.1.1","100.100.100.100","255.255.255.255"} ;ofstream outfile;outfile.open("out.txt");cout<<setw(20)<< setiosflags(ios::left)<<"无效IP"<<setw(20)<<"判断结果"<<endl;outfile<<setw(20)<< setiosflags(ios::left)<<"无效IP"<<setw(20)<<"判断结果"<<endl;for (int i=0;i<sizeof(b)/sizeof(b[0]);i++){cout<<setw(20)<< setiosflags(ios::left)<<b[i]<<setw(20)<<isValidIP(b[i])<<endl;outfile<<setw(20)<< setiosflags(ios::left)<<b[i]<<setw(20)<<isValidIP(b[i])<<endl;}cout<<setw(20)<< setiosflags(ios::left)<<"有效IP"<<setw(20)<<"判断结果"<<endl;outfile<<setw(20)<< setiosflags(ios::left)<<"有效IP"<<setw(20)<<"判断结果"<<endl;for (int i=0;i<sizeof(c)/sizeof(c[0]);i++){cout<<setw(20)<< setiosflags(ios::left)<<c[i]<<setw(20)<<isValidIP(c[i])<<endl;outfile<<setw(20)<< setiosflags(ios::left)<<c[i]<<setw(20)<<isValidIP(c[i])<<endl;}outfile.close();}
0 0
- 判断字符串是否为合法ip
- 判断一个字符串是否为合法ip地址(ipv4)
- Java 判断 String 是否为合法IP
- 判断某个字符串是否是合法IP
- 数字字符串是否为合法IP地址
- VC判断字符串是否为合法数字
- [iOS]判断字符串是否为合法邮箱地址
- 判断字符串是否为合法整数
- 判断输入的字符串是否为合法IP地址的程序
- C语言判断给定的字符串是否为合法的ip地址
- 判断一个字符串是否是合法IP地址
- python实现判断一个字符串是否是合法IP地址
- 【Python】判断一个字符串是否是合法IP地址
- js中判断字符串是否为合法的email格式
- js中判断字符串是否为合法的email格式
- js中判断字符串是否为合法的email格式
- 判断字符串emailAddr是否为合法的email格式
- python点滴:判断字符串是否为合法json格式
- 博弈类题目小结(HDU,POJ,ZOJ)
- Android属性动画Property Animation系列二之ObjectAnimator
- EntityFrameWork 新功能的使用
- 小白学python爬虫
- 同伴与伙伴
- 判断字符串是否为合法ip
- 4412 矩阵键盘
- ie浏览器的标准模式与怪异模式的设置与区分方法
- css vertical-align属性详解
- 【DP】poj1458
- iOS Crash 分析(文一)- 开始
- 字符串中sizeof和strlen的区别,以及'\0'与NULL的区别
- GridView详解
- std::function