leetcode [93]Restore IP Addresses

Given a string containing only digits, restore it by returning all possible valid IP address combinations.

Example:

Input: "25525511135"
Output: ["255.255.11.135", "255.255.111.35"]

题目大意:

给定一个字符串,返回可能的ip列表

解法:

采用dfs方法,count记录划分了几次,index记录当前划分从字符串哪一个字符开始。划分的时候如果遇到0时,0只有在被划分成一位的时候,可以开头,是有效的划分,比如0.0.0.0。被划分的数字要在[0,255]这个范围内。

java:

class Solution {
    private void dfs(String s,List<String>res,StringBuilder tmp,int index,int count){
        if(index==s.length()&&count==4){
            res.add(tmp.toString().substring(1));
        }
        if(count==4) return;
        for(int i=1;i<=3;i++){
           if(index+i>s.length()||Integer.parseInt(s.substring(index,index+i))>255||(i>1&&s.charAt(index)=='0')) continue;
            tmp.append('.');
            tmp.append(s.substring(index,index+i));
            dfs(s,res,tmp,index+i,count+1);
            tmp.delete(tmp.length()-i-1,tmp.length());
        }
    }

    public List<String> restoreIpAddresses(String s) {
        List<String>res=new ArrayList<String>();
        if(s.isEmpty()) return res;
        StringBuilder tmp=new StringBuilder();
        dfs(s,res,tmp,0,0);

        return res;
    }
}

  

posted @ 2019-04-09 14:46  小白兔云  阅读(121)  评论(0编辑  收藏  举报