数据结构与算法

HDU 2206 IP的计算

2021-11-21  本文已影响0人  itbird01

HDU 2206 IP的计算

解题思路

1.分析题意可知,由于是IP地址检测,所以此题需要做很多检测
2.首先判断,如果满足以下任一条件,则直接返回No--输入的字符串长度等于0、输入的字符串长度大于15、输入的字符串以“.”开头或者结尾、输入的字符串以“.”分隔得到的数组长度不等于4
3.对输入数据做了校验之后,接下来就很简单了,我们只需对以“.”分隔得到的数组每个元素,做如下检测即可:元素长度需要满足length>=1&&length<=3、元素可以转换为无符号整数int、转换得到的int需要满足x>=0&&x<=255
4.满足以上所有条件,则返回YES

解题遇到的问题

认真审题、ACM还是首先要做好数据校验工作

后续需要总结学习的知识点

##解法
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String input = scanner.nextLine();
            boolean ans = true;
            String[] array = input.split("\\.");
            if (input.length() == 0 || input.length() > 15
                    || input.charAt(0) == '.'
                    || input.charAt(input.length() - 1) == '.'
                    || array.length != 4) {
                ans = false;
            } else {
                for (int i = 0; i < array.length; i++) {
                    if (array[i].length() < 1 || array[i].length() > 3) {
                        ans = false;
                        break;
                    }

                    int temp = 0;
                    try {
                        temp = Integer.parseInt(array[i]);
                        if (temp > 255 || temp < 0) {
                            ans = false;
                            break;
                        }
                    } catch (Exception e) {
                        ans = false;
                        break;
                    }
                }
            }
            System.out.println(ans ? "YES" : "NO");
        }
        scanner.close();
    }
}
上一篇下一篇

猜你喜欢

热点阅读