字符串转换为合法IP地址
2019独角兽企业重金招聘Python工程师标准>>>
问题描述
给一个由数字组成的字符串。求出其可能恢复为的所有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<String> restoreIpAddresses(String s) {// Write your code hereArrayList<String> res = new ArrayList<String>();if (s.length()<4||s.length()>12) return res;dfs(s,"",res,0);return res;}public static void dfs(String s, String tmp, ArrayList<String> res, int count){if (count == 3 && isValid(s)) {res.add(tmp + s);return;}for(int i=1; i<4 && i<s.length(); i++){String substr = s.substring(0,i);if (isValid(substr)){dfs(s.substring(i), tmp + substr + '.', res, count+1);}}}}
测试代码如下,
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();//orB.methodB1();}}class B{//instance methodpublic void methodB(){}//static methodpublic static void methodB1(){}}
转载于:https://my.oschina.net/donngchao/blog/551736
字符串转换为合法IP地址相关推荐
- python判断ip地址是否合法_python实现判断一个字符串是否是合法IP地址的示例
一个刚结束的笔试题目,简单贴一下吧,下面是具体实现: #!usr/bin/env python #encoding:utf-8 ''' __Author__:沂水寒城 功能:判断一个字符串是否是合法I ...
- aspx 判断字符串是否为decimal_python实现判断一个字符串是否是合法IP地址
一个刚结束的笔试题目,简单贴一下吧,下面是具体实现: #!usr/bin/env python#encoding:utf-8 '''__Author__:沂水寒城功能:判断一个字符串是否是合法IP地址 ...
- python判断字符串合法,详解Python判定IP地址合法性的三种方法 python中判断一个字符串是否是IP地址...
html 中 鼠标放在标签上会显示小手状,其它标签在其他标签上,美工给加了一些样式,鼠标放上去也显示小手状.有哪位大手状样式 有什么不懂的前端问题可以去菜鸟驿站.全都是泡沫,只一刹的花火,所谓的友情, ...
- 数字字符串转化成 IP 地址
数字字符串转化成 IP 地址 1.参考资料 https://www.nowcoder.com/practice/ce73540d47374dbe85b3125f57727e1e 2.题目要求 题目描述 ...
- 【C语言】从字符串中提取IP地址最简洁的方法
首先先看一下判断字符串是否为IP地址(IPv4地址是否合法)的方法: ([C语言]判断字符串是否为IP地址(IPv4地址是否合法)) #include <stdio.h> #include ...
- 字符串中查找IP地址的正则表达式
字符串中查找IP地址的正则表达式: IP地址:(2[0-4]\d|25[0-5]|[01]\d\d|\d\d|\d)\.(2[0-4]\d|25[0-5]|[01]\d\d|\d\d|\d)\.(2[ ...
- 算法题解——将字符串转化为ip地址
算法题解--将字符串转化为ip地址 题目描述 现在有一个只包含数字的字符串,将该字符串转化成IP地址的形式,返回所有可能的情况. 例如: 给出的字符串为"25525511135", ...
- python提取一段字符串中的ip地址
代码如下: #!/usr/bin/env python3 # -*- coding:utf-8 -*-import re import osip_str = os.popen('cat /root/b ...
- 字符串双引号表示c语言,c语言中单引号和双引号的区别(顺利解决从字符串中提取IP地址的困惑)...
c语言中的单引号和双引号可是有很大区别的,使用之前一定要了解他们之间到底有什么不同,下面小编就给大家详细的介绍一下吧,对此还不是很了解的朋友可以过来参考下 问题:从c++文件中将std:string转 ...
- c语言整数转ip地址字符串,C/C++ ip地址与int类型的转换实例详解
C/C++ ip地址与int类型的转换实例详解 前言 最近看道一个面试题目,大体意思就是将ip地址,例如"192.168.1.116"转换成int类型,同时还能在转换回去 思路 i ...
最新文章
- Pandownload惊喜复活!下载速度惊人!
- spring-amqp生产者手动ACK
- 【Android Gradle 插件】Module 目录下 build.gradle 配置文件 ( android 闭包块配置 | AppExtension 扩展类型参考文档 )
- Python基础教程第1章:基础知识---学习记录
- 发起一个ajax请求,发送ajax请求
- mysql cmd ping_cmd命令行的ping用法
- 计算机感染病毒后 一定不能清除的措施是,计算机感染病毒后,一定不能清除的措施是()。...
- linux:rsync命令
- html编辑四则运算,简单的web四则运算计算器
- UVA 11090 Going in Cycle!! 二分答案 + bellman-ford
- 分享一个windows下检测硬件信息的bat脚本
- 用鸿蒙取名好吗,“鸿蒙”两个字,还是古人写得好看…
- 对AngularJS的编译和链接过程讲解一步到位的文章
- python怎么命名未知数_怎样用Python计算含有未知数的方程式-百度经验
- Linux 命令 su 和 sudo 的区别?
- 【网络设备】单臂路由和STP配置及理论
- c语言 extern的作用
- 简要介绍各种键盘布局
- 前端优化之减少HTTP请求
- 半次元收藏夹爬虫(残疾版,不喜勿喷)