面试:字符串: 提取IP地址
2016-06-09 19:45
393 查看
题目
给定一个只含数字的字符串,返回所有合法的ip地址算法
ip地址是4段每段三个情况:
(1) 只取一个数字
(2) 取两个数字,第一个数字不是0
(3) 取三个数字,第一个数字不是0,而且三个数组成的数小于256
//递归
import java.util.*; class Solution{ public ArrayList<String> restoreIpAddress(String s){ ArrayList<String> res=new ArrayList<String>(); String ip=""; restoreIpAddress(s,0,0,ip,res); return res; } private void restoreIpAddress(String s,int start,int part,String ip, ArrayList<String> res){ //数字多,则忽略 if(s.length() -start >(4-part)*3) return; //数字太少也忽略 if(s.length()-start <(4-part)) return; //找到一个合法的ip if(start==s.length() && part ==4) { //把最后一个抹去 res.add(ip.substring(0,ip.length()-1)); return; } int num =0; for(int i=start;i<Math.min(start+3,s.length());i++){ //每个位置有三种可能 num = num*10 +(s.charAt(i)-'0'); if(num<=255){ //每段ip地址的数字都是小于256 ip+=s.charAt(i); restoreIpAddress(s,i+1,part+1,ip+'.',res); } //如果第一个是0的话,只考虑0,不考虑0x组成的地址 if(num==0) break; } } }
相关文章推荐
- 一座熟悉而陌生的城市--一个程序员的成长史(7)
- 面试:字符串: 字符串转换为10进制数
- 海量数据处理面试题方法总结
- java 数据类型,运算符 分支语句 面试知识点总结与习题
- mark[一个32岁入门的70后程序员给我的启示]
- php程序员经验
- 那些不能遗忘的知识点回顾——操作系统系列(笔试面试高频题)
- 来自投资银行的20个Java面试题--转自码农网
- 阿里面试题总结
- 关于一道简单的Java 基础面试题的剖析: short s1=1;s1 = s1 +1会报错吗?
- 谷歌2014面试题 Problem E. Spaceship Defence(spfa,哈希)
- 一个32岁入门的70后程序员给我的启示
- 一个32岁入门的70后程序员给我的启示
- 作为Java程序员这些都不知道那就真的OUT了!
- 一个32岁入门的70后程序员给我的启示(转)
- 浅谈HashMap与HashTable
- Android面试题目(1-2-3--7)
- Servlet & JSP 面试题
- iOS面试
- Android 面试题总结之Android 进阶(一)