HJ90 合法IP | 题解
将地址分为多个块,然后逐块进行验证。仅当每个块都有效时,该地址才有效。这种方法称为 分治法。
通过界定符将地址分为四块,对于地址的每一块,检查它们是否在 0 - 255 内,且没有前置零。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
String[] nums = in.next().split("\\.", -1);
String res = "YES";
if (nums.length == 4) {
for (String num : nums) {
if (num.length() == 0 || num.length() > 3) {
res = "NO";
break;
}
if (num.charAt(0) == '0' && num.length() != 1) {
res = "NO";
break;
}
for (char ch : num.toCharArray()) {
if (!Character.isDigit(ch)) {
res = "NO";
break;
}
}
if (Integer.parseInt(num) > 255) {
res = "NO";
break;
}
}
} else
res = "NO";
System.out.println(res);
}
}
}