题解 | #数字字符串转化成IP地址#
数字字符串转化成IP地址
http://www.nowcoder.com/practice/ce73540d47374dbe85b3125f57727e1e
java dfs+回溯
import java.util.*;
public class Solution {
/**
*
* @param s string字符串
* @return string字符串ArrayList
*/
static ArrayList<String> res = new ArrayList<>();
public ArrayList<String> restoreIpAddresses (String s) {
// write code here
dfs(0,s,new ArrayList<String>());
return res;
}
public void dfs(int u, String str, ArrayList<String> list) {
if(u == str.length() && list.size() == 4){
String st = "";
for(int i = 0;i < list.size() - 1;i++){
st += list.get(i) + ".";
}
st += list.get(list.size() - 1);
res.add(st);
return;
}
if(u > str.length()) {
return;
}
for(int i = 1;i <= 3;i++){
if(u + i <= str.length()){
String s1 = str.substring(u,u + i);
int k = Integer.valueOf(s1);
if(k > 255 || (k == 0 && s1.length() > 1) || (s1.length() > 1 && s1.charAt(0) == '0') ){
continue;
}
list.add(s1);
dfs(u + i,str,list);
list.remove(list.size() - 1);
}
}
}
}
查看15道真题和解析