《leetCode-php》数字字符串转ip地址

现在有一个只包含数字的字符串,将该字符串重新存储成IP地址的形式,返回所有可能的情况。
例如:给出的字符串为"25525511135", 返回["255.255.11.135", "255.255.111.35"]. (顺序没有关系)

<?php
function restoreIpAddresses($s) {
    $length = strlen($s);
    if ($length > 12 || $length < 4) {
        //如果超过12位,小于4位,则不可能分割成ip段
        return ;
    }
    $arrOutput = array();
    for ($i = 1; $i <= 3; $i ++) {
        for ($j = $i + 1; $j <= $i + 3; $j ++) {
            for ($k = $j + 1; $k < $length; $k ++) {
               if ($j >= $length - 1) {
                   //第二个位置超过了长度,则结束
                   continue;
               }
               $sub1 = substr($s, 0, $i);
               $sub2 = substr($s, $i, $j - $i);
               $sub3 = substr($s, $j, $k - $j);
               $sub4 = substr($s, $k, $length - $k);
               if (intval($sub1) > 255 || intval($sub2) > 255
                   || intval($sub3) > 255 || intval($sub4) > 255) {
                   continue;
               }
               $arrOutput[] = "$sub1.$sub2.$sub3.$sub4";
            }
        }
    }
    return $arrOutput;
}
$s = '25525511135';
$s = '25525';
$ret = restoreIpAddresses($s);
print_r($ret);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值