存在一种虚拟IPv4地址,由4
小节组成,每节的范围为0~255
,以#
号间隔,
虚拟IPv4地址可以转换为一个32
位的整数,例如:
128#0#255#255
,转换为32
位整数的结果为2147549183(0x8000FFFF)
1#0#0#0
,转换为32位整数的结果为16777216(0x01000000)
现以字符串形式给出一个虚拟IPv4地址,限制第1小节
的范围为1~128
,
即每一节范围分别为(1~128)#(0~255)#(0~255)#(0~255)
,
要求每个IPv4地址只能对应到唯一的整数上。
如果是非法IPv4,返回invalid IP
输入一行,虚拟IPv4地址格式字符串
输出以上,按照要求输出整型或者特定字符
100#101#1#5
1684340997
1#2#3
invalid IP
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* Author: Amos
* E-mail: amos@amoscloud.com
* Date: 2022/6/2
* Time: 13:48
* Description:
*/
public class Main0130 {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
String ip = scanner.nextLine();
solution(ip);
}
}
private static void solution(String ip) {
String[] strings = ip.split("#");
int len = strings.length;
long count = 0;
boolean isF = true;
if (len == 4) {
for (int i = 0; i < len; i++) {
long n = Integer.parseInt(strings[i]);
if (i == 0 && (n < 1 || n > 128)) {
isF = false;
break;
} else if (n < 0 || n > 255) {
isF = false;
break;
}
count += n << (8 * (3 - i));
}
} else {
isF = false;
}
if (isF) {
System.out.print(count);
} else {
System.out.print("invalid IP");
}
}
}