知识点:使用ArrayList<String>();
注意这道题的陷阱:010 或者001 用0 开头的是不合法的。
针对这一点使用来回string int转换判断字符串长度是否改变
图片.png
class Solution {
public List<String> restoreIpAddresses(String s) {
List<String> ans=new ArrayList<String>();
helper(s,0,"",ans);
return ans;
}
public void helper(String left,int times, String out,List<String >ans){
if(times==4){
if(left.isEmpty())
ans.add(out);
return;
}
for(int i=1;i<4;i++){
if(left.length()<i){
break;
}
int val=Integer.parseInt(left.substring(0,i));
if(val>255|| i != String.valueOf(val).length())
continue;
helper(left.substring(i),times+1,out+left.substring(0,i)+(times==3?"":"."),ans);
}
}
}
网友评论