Given a string containing only digits, restore it by returning all possible valid IP address combinations.
For example:
Given “25525511135”,return [“255.255.11.135”, “255.255.111.35”]. (Order does not matter)
題目描述
給定一個字符串,看能構成多少種IP地址。
思路
IP地址的每一位的值是在0到255之間,沒有前導零,運用StringBuffer來存儲即可。
public class RestoreIP {
ArrayList<String> result;
public ArrayList<String> restoreIpAddresses(String s) {
result = new ArrayList<>();
StringBuilder sb = new StringBuilder("");
parse(s,0,4,sb);
return result;
}
private void parse(String s,int start,int num,StringBuilder buffer) {
if ( num==0 )
return ;
String t = null ;
int value = 0 ;
for ( int len=1; len<=3; len++ ) {
//修改一次!
if ( start+len>s.length() || (s.charAt(start)=='0'&&len!=1) )
return;
t = s.substring(start, start+len);
value = Integer.parseInt(t);
if ( value<256 ) {
buffer.append(t);
if ( num!=1 ) {
buffer.append(".");
parse(s, start+len, num-1, buffer);
buffer.delete(buffer.length()-1-len, buffer.length() );
} else {
if ( s.length()==start+len )
result.add(buffer.toString());
buffer.delete(buffer.length()-len, buffer.length() );
}
}
}
}
}