题目

递归。
官网解析如下:

递归的编写水平还是太低了,主要还是思想上不到位。
class Solution {
static final int SEG_COUNT=4;
List<String> ans=new ArrayList<String>();
int[] segment=new int[SEG_COUNT];
public List<String> restoreIpAddresses(String s) {
dfs(s,0,0);
return ans;
}
private void dfs(String s,int segId,int segStart){
if(segId==SEG_COUNT){
if(segStart==s.length()){
StringBuffer ipAddr=new StringBuffer();
for(int i=0;i<SEG_COUNT;i++){
ipAddr.append(segment[i]);
if(i!=SEG_COUNT-1){
ipAddr.append('.');
}
}
ans.add(ipAddr.toString());
}
return;
}
if(segStart==s.length()){
return;
}
if(s.charAt(segStart)=='0'){
segment[segId]=0;
dfs(s,segId+1,segStart+1);
}
int addr=0;
for(int segEnd=segStart;segEnd<s.length();segEnd++){
addr=addr*10+(s.charAt(segEnd)-'0');
if(addr>0&&addr<=255){
segment[segId]=addr;
dfs(s,segId+1,segEnd+1);
}else{
break;
}
}
}
}

338

被折叠的 条评论
为什么被折叠?



