题目:
如何判断一个字符串是否为合法的IP地址。
要求:
不能使用正则表达式和自带的库函数,以及string等各种类。
C++源码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| #include <bits/stdc++.h>
bool isLegal(const char* pstr) { char* str = (char*) pstr;
int validSegementSize = 0; int oneSeg = 0; int segLen = 0; char c = *str;
while (c != '\0') { if (c >= '0' && c <= '9') { oneSeg = oneSeg * 10 + (c - '0'); segLen++; } else if (c == '.') { if (oneSeg >= 0 && oneSeg <= 255) { validSegementSize++; } else { return false; } oneSeg = 0; segLen = 0; } else { return false; } str++; c = *str; } if (oneSeg <= 255 && segLen >= 0) { validSegementSize++; }
if (validSegementSize == 4) { return true; } return false; }
int main() { char* str = "10.255.0.1"; bool res = isLegal(str); std::cout << "res: " << res << std::endl; return 0; }
|