93. 復原IP地址

題目:93. Restore IP Addresses
難度:中等
類型:深搜 字符串
星級:五星推薦
題意:把一個字符串恢復成所有可能的IP地址,注意0不能作爲每段的開頭。

class Solution {
public:
    vector<string> res;
    vector<int> temp;
    int n;
    vector<string> restoreIpAddresses(string s) {
        n = s.size();
        dfs(s, 0, 0); //當前枚舉的位置 已經找到的IP數
        return res;
    }
    void dfs(string& s, int u, int k){
        if(u == n){
            if(k == 4){
                string t = to_string(temp[0]);
                for(int i = 1; i < 4; i++) t += "." + to_string(temp[i]);
                res.push_back(t);
            }
            return;
        }
        if(k > 4) return;
        int x = 0, t = 0;
        for(int i = u; i < min(u+3, n); i++){
            t = t*10 + s[i]-'0';
            if(t <= 255){
                temp.push_back(t);
                dfs(s, i+1, k+1);
                temp.pop_back();
            }
            if(!t) break; //不能以0開頭 只能是單獨的0 所以和爲0要立即結束 172.0.1.1
        }
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章