leetcode Restore IP Addresses
来源:互联网 发布:软件工程硕士 单证 编辑:程序博客网 时间:2024/03/29 18:24
题目链接
这个题难度倒是没多少。递归回溯。不过要考虑0出来后面必须没有东西。这个特殊情况。
public class Solution { String s; List<String> result; StringBuilder sb; public List<String> restoreIpAddresses(String s) { this.s=s; result=new LinkedList<String>(); sb=new StringBuilder(); help(0,1); for(String str:result) { System.out.println(str); } return result; } public void help(int start,int index) { if(index>=5) { if(start>=s.length()) { result.add(sb.toString()); } return ; } for(int i=0;i<3&&start+i+1<=s.length();i++) { int number=Integer.parseInt(s.substring(start,start+i+1)); if(number==0) { if(index!=1) { sb.append("."); } sb.append("0"); help(start+1,index+1); if(index!=1) { sb.delete(sb.length()-2, sb.length()); } else { sb.delete(sb.length()-1, sb.length()); } break; } if(number>255) { return; } if(index!=1) { sb.append("."); } sb.append(s.substring(start,start+i+1)); help(start+i+1,index+1); if(index!=1) { sb.delete(sb.length()-2-i, sb.length()); } else { sb.delete(sb.length()-1-i, sb.length()); } } }}
看了别人的代码
public List<String> restoreIpAddresses(String s) { List<String> list = new ArrayList<>(); if(s == null || s.length() < 4) return list; search(s, 0, 0, new StringBuilder(), list); return list;}public void search(String s, int index, int count, StringBuilder sb, List<String> list) { if(count == 4) { if(index == s.length()) list.add(sb.toString()); return; } for(int i=1; i+index<=s.length() && i <= 3; i++) { int num = Integer.parseInt(s.substring(index, index+i)); if(num >= 0 && num <= 255) { if(num < 10 && i > 1) return; StringBuilder newSb = new StringBuilder(sb); if(count == 0) newSb.append(num); else newSb.append(".").append(num); search(s, index+i, count+1, newSb, list); } else { return; } }}
他处理0开头的方式是判断数字是两位的时候值是不是小于10.并且这个程序会出现过多的StringBuilder。。虽然程序比我简单,但是,还有优化的地方。
0 0
- LeetCode: Restore IP Addresses
- LeetCode : Restore IP Addresses
- [LeetCode] Restore IP Addresses
- [LeetCode]Restore IP Addresses
- LeetCode:Restore IP Addresses
- LeetCode Restore IP Addresses
- [leetcode] Restore IP Addresses
- LeetCode:Restore IP Addresses
- [LeetCode] Restore IP Addresses
- LeetCode - Restore IP Addresses
- LeetCode | Restore IP Addresses
- 【leetcode】Restore IP Addresses
- Leetcode: Restore IP Addresses
- leetcode Restore IP Addresses
- leetcode Restore IP Addresses
- [LeetCode] Restore IP Addresses
- Leetcode: Restore IP Addresses
- [LeetCode] Restore IP Addresses
- Java面试题集锦
- Windows多线程的一个经典的例子
- 手机开发实战75——端口介绍1
- wampserver 3.0.4 集成环境64bit
- BZOJ_1491_[NOI2007]社交网络_最短路径
- leetcode Restore IP Addresses
- yaml vs json
- 【MyBatis框架点滴】——MyBatis多对多查询
- 线程安全和线程不安全理解
- 微信开发---->网页授权
- eclipse基本操作_Object类_equals()_==_hashCode()_getClass()
- 【转】基于display:table的CSS布局
- Vmware 虚拟机克隆后网卡地址的修改
- ASM javassist