一、题目内容
二、题解
解法1:
思路
全排列+剪枝
代码
public class Solution { private ArrayList<String> res = new ArrayList<String>(); public ArrayList<String> restoreIpAddresses (String s) { ArrayList<String> parts = new ArrayList<String>(); recur(s,0,parts); return res; } private void recur(String str,int startIdx,ArrayList<String> parts){ if(parts.size() == 4){ String a = parts.get(0); String b = parts.get(1); String c = parts.get(2); String d = parts.get(3); if(a.length() + b.length() + c.length() + d.length() == str.length()) { res.add(a + "." + b + "." + c + "." + d); } return; } for(int i = startIdx; i<str.length()&&i<startIdx+3;i++){ String subStr = str.substring(startIdx,i+1); Integer subNum = Integer.parseInt(subStr); if(subNum>=0&&subNum<=255){ parts.add(subNum.toString()); recur(str,i+1,parts); parts.remove(parts.size()-1); } } }}