题解 | 合法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"); } }