题解 | #数字字符串转化成IP地址#

数字字符串转化成IP地址

http://www.nowcoder.com/practice/ce73540d47374dbe85b3125f57727e1e


class Solution {
public:
    vector<string> res;
    string src_str;
    int str_len;
    
    string trans(vector<string> str_vec){
        string res;
        for(auto s: str_vec){
            res += s;
            res.push_back('.');
        }
        res.pop_back();    
        return res;
    }
    
    bool is_legal_num(string num_str){
        if(num_str.size()>= 2 && num_str[0] == '0'){
            return false;
        }
        int num = atoi(num_str.c_str());
        return num >= 0 && num <= 255;
    }
    
    void dfs(int index, string num_str, vector<string> tmp){
        if(index > str_len){
            return;
        }
        
        if(index < str_len && tmp.size() == 4){
            return;
        }
        if(index == str_len && tmp.size() == 4){
            res.push_back(trans(tmp));
        }
        num_str.push_back(src_str[index]);
        if(is_legal_num(num_str)){
            dfs(index+1, num_str, tmp); //不用'.'分割,继续尝试加入下一个数字到当前段。
                
            tmp.push_back(num_str); //用'.'分割,组下一段数组
            dfs(index+1, "", tmp);
            tmp.pop_back();
        }else{
            return;
        }
        num_str.pop_back();
        
    }
    /**
     * 
     * @param s string字符串 
     * @return string字符串vector
     */
    vector<string> restoreIpAddresses(string s) {
        // write code here
        src_str = s;
        str_len = src_str.size();
        if(str_len < 4 || str_len > 12){
            return res;
        }
        dfs(0, "", vector<string>());
        return res;
    }
};
全部评论

相关推荐

点赞 评论 收藏
分享
死在JAVA的王小美:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,我也是,让我免了一轮,但是硬气拒绝了
点赞 评论 收藏
分享
蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务