private void restore(int start, String[] ip, int curNum, String s) {
		if (start > s.length() || curNum >= 4) {
			return;
		}
		if (curNum == 3) {
			String last = s.substring(start);
			if (isValid(last)) {
				ip[3] = last;
				String oneResult = "";
				for (int i = 0; i < ip.length; i++) {
					oneResult += String.valueOf(ip[i]);
					if (i < 3) {
						oneResult += ".";
					}
				}
				result.add(oneResult);
			}
			return;
		}
		for (int i = start; i < s.length(); i++) {
			String num = s.substring(start, i + 1);
			if (isValid(num)) {
				ip[curNum] = num;
				restore(i + 1, ip, curNum + 1, s);
			} else {
				return;
			}
		}
	}