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

数字字符串转化成IP地址

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

回溯法

class Solution {
public:
    /**
     * 
     * @param s string字符串 
     * @return string字符串vector
     */
    bool judge(string str){  //判断地址中的单元是否合法
        if(str.size()==0) return false;
        if(str[0]=='0'&&str.size()>1) return false;
        int res=0,num=0;
        for(int i=0;i<str.size();i++){
            res=res*10+(str[i]-'0');
        }
        if(res>255) return false;
        return true;
    }
    void help(vector<string> &res,string str,string s,int start,int num){
        if(start==s.size()&&num==4){ //如果遍历完了字符串,并且有4个合法单元,就加入res
            //cout<<str<<endl;
            str.pop_back();
            res.push_back(str);
            return ;
        }
       for(int i=1;i<=3&&start+i<=s.size();i++){  //模拟单元字符串的长度
            string temp=s.substr(start,i);
            if(judge(temp)&&num<4){
                str+=temp;
                str.push_back('.');
                help(res,str,s,start+i,num+1);
                for(int j=0;j<=i;j++) str.pop_back(); //回溯
            }
        }
        return ;
    }
    vector<string> restoreIpAddresses(string s) {
        // write code here
        vector<string> res;
        string str;
        help(res,str,s,0,0);
        return res;
    }
};
全部评论

相关推荐

躺尸修仙中:因为很多92的也去卷中小厂,反正投递简历不要钱,面试不要钱,时间冲突就推,不冲突就面试积累经验
点赞 评论 收藏
分享
头像
11-09 12:17
清华大学 C++
out11Man:小丑罢了,不用理会
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务