华为OD机试真题 JavaScript 实现【合法IP】【牛客练习题】

一、题目描述

IPV4地址可以用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此正号不需要出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。

现在需要你用程序来判断IP是否合法。

二、输入描述

输入一个ip地址,保证不包含空格。

三、输出描述

返回判断的结果YES or NO。

四、解题思路

  1. 输入一个IP地址,将其存储为字符串str;
  2. 使用.作为分隔符,将IP地址拆分为字符串数组nums;
  3. 初始化结果result为"YES";
  4. 判断拆分后的nums数组长度是否为4,如果不为4,则IP地址不合法,将result设置为"NO";
  5. 遍历nums数组中的每个元素,判断每个元素是否合法;
  6. 对于每个元素,检查其长度是否为0或大于3,如果是,则IP地址不合法,将result设置为"NO";
  7. 对于每个元素,遍历其每个字符,检查是否为数字,如果不是,则IP地址不合法,将result设置为"NO";
  8. 对于每个元素,检查其是否以0开头且长度不为1,如果是,则IP地址不合法,将result设置为"NO";
  9. 对于每个元素,将其转换为整数并检查是否大于255,如果大于255,则IP地址不合法,将result设置为"NO";
  10. 输出result;

五、Java算法源码

function isValidIP(ip) {
    const nums = ip.split('.');
    let result = 'YES';

    if (nums.length === 4) {
        // 遍历每个元素,合不合法
        for (const element of nums) {
            // 每段长度等于0,或者长度大于4,都不合法
            if (element.length === 0 || element.length > 3) {
                result = 'NO';
                break;
            }

            for (const ch of element) {
                // 每段的字符必须是数字
                if (!Number.isInteger(Number(ch))) {
                    result = 'NO';
                    break;
                }
            }

            // 除0以外,所有0开头的字符串都是非法
            if (element.charAt(0) === '0' && element.length !== 1) {
                result = 'NO';
                break;
            }

            // 每段对应的数大于255,也是非法的
            if (parseInt(element) > 255) {
                result = 'NO';
                break;
            }
        }
    } else {
        result = 'NO';
    }

    return result;
}

六、效果展示

华为OD机试真题 JavaScript 实现【合法IP】【牛客练习题】_第1张图片


华为OD机试真题 Java 实现【合法IP】【牛客练习题】

下一篇:华为OD机试真题 Java 实现【基站维修工程师】【2023Q1 200分】,附详细解题思路

本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述

你可能感兴趣的:(搬砖工逆袭Java架构师,华为,javascript,tcp/ip,算法,学习)