当前位置: 代码迷 >> 综合 >> 记某公司技术面试之IP判断
  详细解决方案

记某公司技术面试之IP判断

热度:16   发布时间:2023-09-22 05:49:32.0

题目很简答,输入一个字符串,判断是否是正确的IP地址。因为我是Java做的,所以说一下做法:用split方法以点号为分隔符对字符串进行分割,然后对分割出来的每个字符串判断是否是0-255范围。

坑1:split方法的参数是一个正则表达式,而点号在正则表达式中有特殊含义,所以不要乱用哦,因为以前知道,所以完美避过。

坑2:用split之后,得判断一下是不是四个字符串吧?那么1.1.1.1.使用了split之后长度是多少呢?

坑3:如果你使用了Integer.parseInt方法,那么想想0吧!

小公司的程序员表示,原来这才是真正的编程。附上面试后改进的代码:

import java.util.Arrays;
import java.util.Scanner;
import java.util.Stack;public class Main {private static Scanner sc = new Scanner(System.in);public static void main(String[] args) {func();}private static void func() {while(sc.hasNext()) {boolean flag = fun();if (flag) {System.out.println("YES");} else {System.out.println("NO");}}}private static boolean fun(){String str = sc.nextLine();char ch = str.charAt(str.length() - 1);if (!(ch <= '9' && ch >= '0')) return false;String[] ss = str.split("\\.");if (ss.length != 4) return false;for (String s : ss) {int temp = toInteger(s);if (temp < 0 || temp > 255) {return false;}}return true;}private static int toInteger(String str){int sum=0;char ch=' ';for(int i=0;i<str.length();i++){ch=str.charAt(i);if(!(ch>='0' && ch<='9')) return 2333;sum=sum*10+(str.charAt(i)-'0');}return sum;}}

 

  相关解决方案