Leetcode 93-- 递归

2018-12-15  本文已影响0人  Ariana不会哭

知识点:使用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);
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读