LeetCode:93には、IPアドレスの復旧IPを復元します

试题
数字だけを含む文字列を考えると、すべての可能な有効なIPアドレスの組み合わせを返すことによって、それを復元します。

例:

入力:「25525511135」
出力:[「255.255.11.135」、「255.255.111.35」]

コード
DFSは国境より困難ではありませんが、

class Solution {
    public List<String> restoreIpAddresses(String s) {
        List<String> out = new ArrayList<String>();
        String[] temp = new String[4];
        if(s == null || s.length() > 12) return out;
        findAll(s, out, temp, 0, 0);
        return out;
    }
    private void findAll(String s, List<String> out, String[] temp, int start, int num){
        if(num == 4){
            out.add(String.join(".", temp));
            return;
        }
        for(int i = start + 1; i <= start + 3; i++){
//             i的长度不符合要求,超过了length
            if(i > s.length()) break;
//             当num=3是i必须是length
            if(num == 3 && i != s.length()) continue;
            
            String is = s.substring(start, i);
            Integer ii = Integer.valueOf(is);
            
//             数字超过255
            if(ii > 255) continue;
//             数字以0开始,但是有不等于0
            if(is.startsWith("0") && ii != 0) continue;
//             数字全是0,但是长度超过1
            if(is.length()>1 && ii  == 0) continue;
            
            temp[num] = is;
            findAll(s, out, temp, i, num+1);
        }
        return;
    }
}
公開された557元の記事 ウォンの賞賛500 ビュー153万+

おすすめ

転載: blog.csdn.net/qq_16234613/article/details/100576067