LeetCode-93. 復原IP地址

代碼思路來自https://leetcode-cn.com/problems/restore-ip-addresses/solution/bao-li-he-hui-su-by-powcai/

將java的代碼學習並修改成了C++代碼備查

 

solution:

class Solution {
public:
    vector<string> restoreIpAddresses(string s) {
        vector<string> res;
        int n = s.length();
        backtrack(0, "", 4, s, res, n);
        return res;
    }

    void backtrack(int i, string tmp, int flag, string s, vector<string> &res, int n) {
        if (i == n && flag == 0) {
            res.push_back(tmp.substr(0, tmp.length() - 1));
            return;
        }
        if (flag < 0) return;
        for (int j = i; j < i + 3; j++) {
            if (j < n) {
                if (i == j && s[j] == '0') {
                    backtrack(j + 1, tmp + s[j] + ".", flag - 1, s, res, n); //首位是0那麼這一段也就是0,所以直接添加0.並且往下搜索 
                    break; //這是處理第一種情況的處理完成後可以直接退出下面是處理首段不是0的情況 
                }
                
                if (atoi(s.substr(i, (j+1-i)).c_str()) <= 255) //往下找(j-i+1)個長度的子串 
                    backtrack(j + 1, tmp + s.substr(i, (j+1-i)) + ".", flag - 1, s, res, n);
            }
        }
	}
};

 

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