-
这道题描述不是很清楚,示例中的情况只属于提交问题中的一小部分,提交问题中会有‘+’、‘03’或者空等情况。
此算法需要注意:Integer temp = Integer.parseInt(num); 如果num是“+12”此类数据,parseInt转型的时候会把+ - 自动去除。
需要使用正则表达式判断字符是否合法。
-
如果将num换成如下方式处理,则多了一层循环;如果时间复杂度是O(n),不可取;
for(Character ch : element.toCharArray()){ //每段的字符必须是数字
if(!Character.isDigit(ch)){
result = "NO";
break;
}
}
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String str = scanner.next();
//System.out.println("str=" + str);
String[] nums = str.split("\\.");
if (nums.length != 4) {
System.out.println("NO");
return;
}
for (String num : nums) {
if(Objects.isNull(num) || "".equals(num) ){
System.out.println("NO");
return;
}
if (num.length() > 1 && num.charAt(0) == '0'){
System.out.println("NO");
return;
}
if (num.substring(0, 1).matches("[^0-9]")){
System.out.println("NO");
return;
}
try {
Integer temp = Integer.parseInt(num);
if(temp < 0 || temp > 255){
System.out.println("NO");
return;
}
} catch (NumberFormatException e) {
System.out.println("NO");
return;
}
}
System.out.println("YES");
}
}
}