一、题目内容

image.png

二、题解

解法1:

思路

全排列+剪枝

代码

  1. public class Solution {
  2. private ArrayList<String> res = new ArrayList<String>();
  3. public ArrayList<String> restoreIpAddresses (String s) {
  4. ArrayList<String> parts = new ArrayList<String>();
  5. recur(s,0,parts);
  6. return res;
  7. }
  8. private void recur(String str,int startIdx,ArrayList<String> parts){
  9. if(parts.size() == 4){
  10. String a = parts.get(0);
  11. String b = parts.get(1);
  12. String c = parts.get(2);
  13. String d = parts.get(3);
  14. if(a.length() + b.length() + c.length() + d.length() == str.length()) {
  15. res.add(a + "." + b + "." + c + "." + d);
  16. }
  17. return;
  18. }
  19. for(int i = startIdx; i<str.length()&&i<startIdx+3;i++){
  20. String subStr = str.substring(startIdx,i+1);
  21. Integer subNum = Integer.parseInt(subStr);
  22. if(subNum>=0&&subNum<=255){
  23. parts.add(subNum.toString());
  24. recur(str,i+1,parts);
  25. parts.remove(parts.size()-1);
  26. }
  27. }
  28. }
  29. }