Restore IP Addresses

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;
}

 

时间: 2024-09-29 01:55:41

Restore IP Addresses的相关文章

Restore IP Addresses:LeetCode

原题链接: http://oj.leetcode.com/problems/restore-ip-addresses/ 这道题的解法非常接近于NP问题,也是采用递归的解法.基本思路就是取出一个合法的数字,作为IP地址的一项,然后递归处理剩下的项.可以想象出一颗树,每个结点有三个可能的分支(因为范围是0-255,所以可以由一位两位或者三位组成).并且这里树的层数不会超过四层,因为IP地址由四段组成,到了之后我们就没必要再递归下去,可以结束了.这里除了上述的结束条件外,另一个就是字符串读完了.可以看

[LeetCode]93.Restore IP Addresses

题目 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) 思路 基本思路就是取出一

leetcode难度及面试频率

转载自:LeetCode Question Difficulty Distribution               1 Two Sum 2 5 array sort         set Two Pointers 2 Add Two Numbers 3 4 linked list Two Pointers           Math 3 Longest Substring Without Repeating Characters 3 2 string Two Pointers      

LeetCode总结【转】

转自:http://blog.csdn.net/lanxu_yy/article/details/17848219 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近完成了www.leetcode.com的online judge中151道算法题目.除各个题目有特殊巧妙的解法以外,大部分题目都是经典的算法或者数据结构,因此做了如下小结,具体的解题思路可以搜索我的博客:LeetCode题解 题目 算法 数据结构 注意事项 Clone Graph BFS 哈希表 Word Ladder II

LeetCode All in One 题目讲解汇总(持续更新中...)

终于将LeetCode的免费题刷完了,真是漫长的第一遍啊,估计很多题都忘的差不多了,这次开个题目汇总贴,并附上每道题目的解题连接,方便之后查阅吧~ 如果各位看官们,大神们发现了任何错误,或是代码无法通过OJ,或是有更好的解法,或是有任何疑问,意见和建议的话,请一定要在对应的帖子下面评论区留言告知博主啊,多谢多谢,祝大家刷得愉快,刷得精彩,刷出美好未来- 博主制作了一款iOS的应用"Leetcode Meet Me",里面有Leetcode上所有的题目,并且贴上了博主的解法,随时随地都能

【RAC】如何修改 private ip

版本: Clusterware :11.2.0.2 database    :11.2.0.1 #修改前 10.250.7.115          rac1-priv 10.250.7.119          rac2-priv #修改后 10.10.10.101          rac1-priv 10.10.10.102          rac2-priv 因为在11.2版本的Grid Infrastructure中,CRS 服务依赖于存储在OCR中的私有网卡配置信息.下面是存储在O

LoadRunner 技巧之 IP欺骗 (推荐)

IP欺骗也是也loadrunner自带的一个非常有用的功能. 需要使用ip欺骗的原因: 1.当某个IP的访问过于频繁,或者访问量过大是,服务器会拒绝访问请求,这时候通过IP欺骗可以增加访问频率和访问量,以达到压力测试的效果. 2.某些服务器配置了负载均衡,使用同一个IP不能测出系统的实际性能.LR中的IP欺骗通过调用不同的IP,可很大程度上的模拟实际使用中多IP访问和并测试服务器均衡处理的能力. 3.有一些网站会限制同一个用户同一个IP 的登陆.为了更加真实的模拟实际情况,LoadRunner允

iptables v1.4.11发布 IP信息包过滤系统

iptables 是与最新的 2.4.x 版本 Linux 内核集成的 IP 信息包过滤系统.如果 Linux 系统连接到因特网或 LAN.服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置. netfilter/iptables IP 信息包过滤系统是一种功能强大的工具,可用于添加.编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则.这些规则存储在专用的信息包过滤表中,而这些表集成在 Linux 内核

Oracle 11g RAC环境下Private IP修改方法及异常处理

Oracle 11g RAC环境下Private IP修改方法及异常处理 Oracle 11g RAC环境下Private IP修改方法及异常处理 一. 修改方法 1. 确认所有节点CRS服务以启动 # olsnodes -s -n –i host1 1 host1-vip Active host2 2 host2-vip Active 2. 修改Private IP配置信息 如果之前只有一个私有网卡,则直接删除时会报错,如:PRIF-31: Failed to delete the speci