题目:
题解:
按照"."进行分割,分割后数组长度不等于4的直接列为不合法,然后针对分割后的字符可以看做一个整数,利用Integer转换,在转换时需要注意以下校验:
- 首位不为数字的不合法("-12")
- 以0开始的不合法("012")
- 转换为整数后大于255的不合法
public String isValidIP(String string) {
String falseString = "NO";
String trueString = "YES";
if (string == null || string.length() == 0) {
return falseString;
}
String[] split = string.split("\\.");
if (split.length != 4) {
return falseString;
}
for (String s : split) {
try {
if (s.startsWith("0") && s.length() > 1) {
return falseString;
}
if (!Character.isDigit(s.toCharArray()[0])) {
return falseString;
}
int value = Integer.parseInt(s);
if (value > 255) {
return falseString;
}
} catch (Exception e) {
return falseString;
}
}
return trueString;
}
时间复杂度:O(n)