publicclass{ * @param s the IP string * @return All possible valid IP addresses */ public ArrayList<String> restoreIpAddresses(String s){ // Write your code here char[] str = s.toCharArray(); int pointNums = 0; ArrayList<String> result = new ArrayList<String>(); String temp = new String(); if (s == null || s.length() < 4 || s.length() > 12) { return result; } restoreIpAddressesHelper(result, temp, str, 0, pointNums); return result; }
privatevoidrestoreIpAddressesHelper(ArrayList<String> result, String temp, char[] str, int pos, int pointNums){ if (temp.length() == str.length + 3 && pointNums == 3) { result.add(temp); } if (pointNums > 3) { return; } StringBuffer addString = new StringBuffer(); for (int i = pos; i < pos + 3 && i < str.length; i++) { addString.append(str[i]); if (!isValidHelper(addString.toString())) { break; } if ( i == str.length - 1) { restoreIpAddressesHelper(result, temp + addString, str, i + 1, pointNums); } else { restoreIpAddressesHelper(result, temp + addString + ".", str, i + 1, pointNums + 1); } } return; } privatebooleanisValidHelper(String s){ if (s.charAt(0) == '0' && s.length() != 1) { returnfalse; } elseif (Integer.valueOf(s) > 255 ) { returnfalse; } else { returntrue; } } }
近期评论