LeetCode: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)

用C++写的,暴力搜索,加上限制条件,以后考虑是否有改进的地方,这个题目的搜索空间较小、限制条件多,运行速度也很快

class Solution {
public:
    vector<string> restoreIpAddresses(string s) {
        int length = 0;
        vector<string> vs;
        length = s.size();
        int a = 1 , b = 1 , c = 1 , d = 1;
        int tok = 0;
        int tmp = 0;
        for(a=1;a<4;a++){
            if(s[0]=='0' && a>1) break;
            for(b=1;b<4;b++){
                if(s[a]=='0' && b>1) break;
                if(a==3){
                    if(s[0]!='2' && s[0]!='1'){
                        break;
                    }
                    tmp = (s[1]-'0');
                    if(tmp > 5 && s[0] == '2') break;
                }
                for(c=1;c<4;c++){
                    if(s[a+b]=='0' && c>1) break;
                    if(b==3){
                        if(s[a]!='2'&&s[a]!='1') break;
                        tmp = (s[a+1]-'0');
                        if(tmp > 5 && s[a] == '2') break;
                    }
                    for(d=1;d<4;d++){
                        if(s[a+b+c]=='0' && d>1) break;
                        if(c==3){
                            if(s[a+b]!='2'&&s[a+b]!='1') break;
                            tmp = (s[a+b+1] - '0');
                            if(tmp > 5 && s[a+b] == '2') break;
                        }
                        if((a+b+c+d)==length){
                            tok = stoi(s.substr(a+b+c,d));
                            if(tok>255) break;
                            string rt = s.substr(0,a) + "." + s.substr(a,b) + "." + s.substr(a+b,c) + "." + s.substr(a+b+c,d);
                            vs.push_back(rt);
                        }
                    }
                }
            }
        }
        return vs;
    }
};

 改进思路1:内层循环的次数可以改成由上一层限制,想了一下不太对,还要调用min,最后差距不大

 

posted @ 2015-01-22 14:05  一梦轻枫  阅读(131)  评论(0编辑  收藏  举报