题解 | #判断输入的是否为IP地址#

判断输入的是否为IP地址

https://www.nowcoder.com/practice/ad7b6dbfab2a4267a9991110c57aa64f

#!/bin/bash

while read line
    do
        arr=(${line//./ })
        if [ ${#arr[*]} -ne 4 ];then
                printf "error\n"
            else
                for ((i=0; i<${#arr[*]}; i++))
                    do
                        [ ${arr[${i}]} -gt 255 ] && printf "no\n" && break
                    done
                    [ $i == 4 ] && printf "yes\n"
        fi
    done

排行里的第一名的这个代码是真的好。arr=(${line//./ }): 这一行将line中的点号(.)替换为空格,并将结果存储在名为arr的数组中。这样,arr中的每个元素都是IP地址的一个部分。if [ ${#arr[*]} -ne 4 ];then: 这是一个条件语句,检查数组arr的长度是否不等于4。如果不等于4,说明这不是一个合法的IP地址。for ((i=0; i<${#arr[*]}; i++)): 这是一个for循环,遍历数组arr的每个元素。[ ${arr[${i}]} -gt 255 ] && printf "no\n" && break: 检查数组元素是否大于255。如果是,输出字符串"no",并终止循环。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务