码迷,mamicode.com
首页 > 其他好文 > 详细

Restore IP Addresses

时间:2014-11-27 18:16:58      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   os   sp   for   on   

Given a string containing only digits, restore it by returning all possible valid IP address combinations.

For example:
Given "25525511135",

return ["255.255.11.135", "255.255.111.35"]. (Order does not matter)

C++实现代码:

#include<iostream>
#include<string>
#include<vector>
#include<cstdlib>
using namespace std;

class Solution {
public:
    vector<string> restoreIpAddresses(string s) {
        vector<string> ret;
        if(s.empty())
            return ret;
        string str;
        helper(s,0,4,ret,str);
        return ret;
    }
    void helper(string &s,int start,int num,vector<string> &ret,string &str)
    {
        if(num==0)
        {
            //删除最后一个.
            str.pop_back();
            if(str.size()==s.size()+3)
            {
                ret.push_back(str);
            }
            return;
        }
        int len=str.length();
        int i;
        //start+i<=(int)s.length()是为了防止最后一个不能达到3个字符而取到空字符
        //i用来限制子串的长度,最多为3个字符
        for(i=1;i<=3&&start+i<=(int)s.length();i++)
        {
            string tmp=s.substr(start,i);
            if(!isValid(tmp))
                continue;
            str+=tmp+.;
            helper(s,start+i,num-1,ret,str);
            str.erase(len,i+1);
        }
    }
    bool isValid(string s)
    {
        if(s.empty()||s.size()>3)
            return false;
        if(s[0]==0&&s.length()>1)
            return false;
        int num=atoi(s.c_str());
        if(num>=0&&num<=255)
            return true;
        return false;
    }
};

int main()
{
    Solution s;
    vector<string> result=s.restoreIpAddresses(string("25525511135"));
    for(auto a:result)
        cout<<a<<endl;
}

 

Restore IP Addresses

标签:style   blog   io   ar   color   os   sp   for   on   

原文地址:http://www.cnblogs.com/wuchanming/p/4126817.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!