博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串转换为合法IP地址
阅读量:6228 次
发布时间:2019-06-21

本文共 1712 字,大约阅读时间需要 5 分钟。

hot3.png

问题描述

给一个由数字组成的字符串。求出其可能恢复为的所有IP地址。

那么首先我们需要了解ip地址的及其格式。

IP地址及其格式

IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。

解决方案

我们如果使用java解决这个问题,可以这样,

import java.util.ArrayList;public class Solution {        /**     * @param s the IP string     * @return All possible valid IP addresses     */    public static boolean isValid(String s){        if (s.charAt(0)=='0') return s.equals("0");        int num = Integer.parseInt(s);        return num<=255 && num>0;    }    public static ArrayList
 restoreIpAddresses(String s) {        // Write your code here        ArrayList
 res = new ArrayList
();        if (s.length()<4||s.length()>12) return res;        dfs(s,"",res,0);        return res;    }    public static void dfs(String s, String tmp, ArrayList
 res, int count){        if (count == 3 && isValid(s)) {            res.add(tmp + s);            return;        }        for(int i=1; i<4 && i

测试代码如下,

public class Test {	public static void main(String [] args)	{				System.out.println(Solution.restoreIpAddresses("25525511135"));	}}

测试结果如下,

[255.255.11.135, 255.255.111.35]

符合我们的预期目标。

语法细节

其中代码中的语法细节之一是static method 的调用。当我们在一个类中调用另外一个类的方法时,需要注意有两种可能,

class A{  public void methodA(){    new B().methodB();    //or    B.methodB1();  }}class B{  //instance method  public void methodB(){  }  //static method  public static  void methodB1(){  }}

转载于:https://my.oschina.net/donngchao/blog/551736

你可能感兴趣的文章
vue+typescript入门学习
查看>>
arpg网页游戏之地图(三)
查看>>
ExecuteScalar 返回值问题
查看>>
python - 自动化测试框架 - 测试报告
查看>>
多线程的那点儿事(基础篇)
查看>>
win10安装MarkdownPad 2报错This view has crashed的处理及md简单语法
查看>>
RESTful API测试工具
查看>>
Python 安装cx_Oracle模块折腾笔记
查看>>
wvs_patcher批量测试网站
查看>>
【转】Lua编程规范
查看>>
P4779 【模板】单源最短路径(标准版)
查看>>
二三维联动之MapControl与SceneControl的联动
查看>>
cocos2dx ScrollView 测试二 自定义Item和boundingBox
查看>>
洛谷P4175 网络管理
查看>>
js监听input输入字符变化
查看>>
tcpdump详解
查看>>
JAVA基础:ArrayList和LinkedList区别
查看>>
不仅仅完成功能,避免无效成本浪费
查看>>
[转载]SCSF 系列:Smart Client Software Factory 中 MVP 模式最佳实践
查看>>
什么是零宽断言
查看>>