美文网首页
93. 复原IP地址

93. 复原IP地址

作者: 薄荷糖的味道_fb40 | 来源:发表于2019-04-19 20:32 被阅读0次

给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。

示例:

输入: "25525511135"
输出: ["255.255.11.135", "255.255.111.35"]

思路:

回溯法,加一堆条件去判断符合ip地址格式的值,没想到用atoi时候还有个溢出的问题,所以要加上一个位数的判断,具体实现如下,写得有点烂T o T。

class Solution {
public:
    vector<string> res;
    vector<string> restoreIpAddresses(string s) {
        if(s.empty())
        {
            return res;
        }
        findip(s,1,0,"");
        return res;
    }
    void findip(string s,int count,int now,string currstr)
    {
        if(count==4)
        {
            if(s[now]=='0'&&now+1<s.size())
            {
                return;
            }
            string str="";
            for(int i=now;i<s.size();i++)
            {
                str+=s[i];
            }
            if(str.size()>3)
            {
                return;
            }
            int num=atoi(str.c_str());
            if(num<=255)
            {
                currstr+=str;
                res.push_back(currstr);
            }
            return;
        }
        if(s[now]>'2')
        {
            if(now+1<s.size())
            {
                findip(s,count+1,now+1,currstr+s[now]+".");
            }
            if(now+2<s.size())
            {
                findip(s,count+1,now+2,currstr+s[now]+s[now+1]+".");
            }
        }
        else if(s[now]=='0')
        {
            if(now+1<s.size())
            {
                findip(s,count+1,now+1,currstr+s[now]+".");
            }
        }
        else
        {
            if(now+1<s.size())
            {
                findip(s,count+1,now+1,currstr+s[now]+".");
            }
            if(now+2<s.size())
            {
                findip(s,count+1,now+2,currstr+s[now]+s[now+1]+".");
            }
            if(now+3<s.size())
            {
                string str="";
                for(int i=0;i<3;i++)
                {
                    str+=s[now+i];
                }
                int num=atoi(str.c_str());
                if(num<=255)
                {
                    findip(s,count+1,now+3,currstr+s[now]+s[now+1]+s[now+2]+".");
                }
            }
        }

    }
};

相关文章

网友评论

      本文标题:93. 复原IP地址

      本文链接:https://www.haomeiwen.com/subject/hvacgqtx.html