LeetCode 93. Restore IP Addresses 遞歸,分治

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

For example:
Given “25525511135”,

return [“255.255.11.135”, “255.255.111.35”]. (Order does not matter)

題目鏈接

題目描述
給定一個字符串,看能構成多少種IP地址。
思路
IP地址的每一位的值是在0到255之間,沒有前導零,運用StringBuffer來存儲即可。


public class RestoreIP {
    ArrayList<String> result; 
    public ArrayList<String> restoreIpAddresses(String s) {
        result = new ArrayList<>();
        StringBuilder sb = new StringBuilder("");
        parse(s,0,4,sb);
        return result;
    }

    private void parse(String s,int start,int num,StringBuilder buffer) {
        if ( num==0 ) 
            return ; 

        String t = null ;
        int value = 0 ; 
        for ( int len=1; len<=3; len++ ) {
            //修改一次!
            if ( start+len>s.length() || (s.charAt(start)=='0'&&len!=1) )
                return; 

            t = s.substring(start, start+len);
            value = Integer.parseInt(t);

            if ( value<256 ) {
                buffer.append(t);
                if ( num!=1 ) {
                    buffer.append("."); 
                    parse(s, start+len, num-1, buffer);
                    buffer.delete(buffer.length()-1-len, buffer.length() );
                } else {
                    if ( s.length()==start+len ) 
                        result.add(buffer.toString());
                    buffer.delete(buffer.length()-len, buffer.length() );
                }

            }
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章