题解 | 合法IP
这个不应该作为一个中等题,思路很简单,就是各种边界条件比较坑人
边界条件:
- 开头可以是单个0
- 开头数字不能是01这种,必须是有效数字
- 必须是四位,其中数字必须大于0小于等于255
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String ip = in.nextLine();
if (ip == null || ip.equalsIgnoreCase("")) {
System.out.println("NO");
return;
}
String[] ipArr = ip.split("\\.");
if (ipArr.length != 4) {
System.out.println("NO");
return;
}
for (int i = 0; i < ipArr.length; i++) {
if (ipArr[i].equalsIgnoreCase("")) {
System.out.println("NO");
return;
}
char[] cArr = ipArr[i].toCharArray();
if (cArr[0] == '0' && cArr.length > 1) {
System.out.println("NO");
return;
}
int num = 0;
for (int j = 0; j < cArr.length; j++) {
if (!Character.isDigit(cArr[j])) {
System.out.println("NO");
return;
}
num = num * 10 + cArr[j] - '0';
}
// if (i == 0 && num == 0) {
// System.out.println("NO");
// return;
// }
if (num > 255) {
System.out.println("NO");
return;
}
}
System.out.println("YES");
}
}
