93. Restore IP Addresses
来源:互联网 发布:陕西官员被网络大V攻击 编辑:程序博客网 时间:2024/05/19 01:13
这道题核心思想是DFS求解,一个IP地址有四段,每段有1到3个字符,
public List<String> restoreIpAddresses(String s) {
List<String> res = new ArrayList<String>();
if (s == null || s.length() < 4 || s.length() > 12) {
return res;
}
StringBuffer tmp = new StringBuffer();
dfs(0, 0, s, tmp, res);
System.out.println(res.toString());
return res;
}
public void dfs(int count, int index, String s, StringBuffer tmp, List<String> res) {
if (count == 4 && index == s.length()) {
res.add(tmp.toString().substring(0,tmp.length()-1));
return;
}
else{
for(int i=1;i<=3 && index+i<=s.length();i++){
String tmpStr=s.substring(index,index+i);
if(isValid(tmpStr)){
int bt=tmp.length();
int ed=tmp.length()+tmpStr.length();
tmp.append(tmpStr).append(".");
dfs(count+1, index+i, s, tmp, res);
tmp.delete(bt,ed+1);
}
}
}
}
public boolean isValid(String s){
if(s.charAt(0)=='0'){
return s.equals("0");
}
Integer num=Integer.parseInt(s);
return num>0 && num<=255;
}
public static void main(String[] args) {
LeetCode code=new LeetCode();
List<String> res=code.restoreIpAddresses("25525511135");
}
public List<String> restoreIpAddresses(String s) {
List<String> res = new ArrayList<String>();
if (s == null || s.length() < 4 || s.length() > 12) {
return res;
}
StringBuffer tmp = new StringBuffer();
dfs(0, 0, s, tmp, res);
System.out.println(res.toString());
return res;
}
public void dfs(int count, int index, String s, StringBuffer tmp, List<String> res) {
if (count == 4 && index == s.length()) {
res.add(tmp.toString().substring(0,tmp.length()-1));
return;
}
else{
for(int i=1;i<=3 && index+i<=s.length();i++){
String tmpStr=s.substring(index,index+i);
if(isValid(tmpStr)){
int bt=tmp.length();
int ed=tmp.length()+tmpStr.length();
tmp.append(tmpStr).append(".");
dfs(count+1, index+i, s, tmp, res);
tmp.delete(bt,ed+1);
}
}
}
}
public boolean isValid(String s){
if(s.charAt(0)=='0'){
return s.equals("0");
}
Integer num=Integer.parseInt(s);
return num>0 && num<=255;
}
public static void main(String[] args) {
LeetCode code=new LeetCode();
List<String> res=code.restoreIpAddresses("25525511135");
}
阅读全文
0 0
- 93.Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- html开放式标签(单标签)斜杠书写问题
- 差比数列通解(1.6)
- ARKit从入门到精通(8)-ARKit捕捉平地
- 老司机带你了解hadoop
- 顺序表的具体实现
- 93. Restore IP Addresses
- 多字段查询,多条件查询写法
- hbase启动后hmaster闪挂
- [leetcode]108. Convert Sorted Array to Binary Search Tree@Java解题报告
- Java设计模式--工厂方法模式【Factory Method Pattern】
- 常见异常
- CentOS6.5下源码安装gcc-4.9.4
- JavaMail发送邮件
- 线段树笔记