zoukankan      html  css  js  c++  java
  • 力扣算法题—093复原IP地址

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

    示例:

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


     1 //暴力搜索
     2 //一共分为4组
     3 //每组数据不超过三位
     4 class Solution {
     5 public:
     6     vector<string> restoreIpAddresses(string s) {
     7         vector<string>res;
     8         for(int a = 1; a<4;++a)
     9             for(int b=1;b<4;++b)
    10                 for(int c =1;c<4;++c)
    11                     for(int d=1;d<4;++d)
    12                         if (a + b + c + d == s.size()) {
    13                             int A = stoi(s.substr(0, a));//取子串并转为数组
    14                             int B = stoi(s.substr(a, b));
    15                             int C = stoi(s.substr(a+b, c));
    16                             int D = stoi(s.substr(a+b+c, d));
    17                             if (A <= 255 && B <= 255 && C <= 255 && D <= 255) {
    18                                 string str = to_string(A) + "." + to_string(B) + "." + to_string(C) + "." + to_string(D);
    19                                 if (str.size() == (s.size() + 3))//去除010这种组合
    20                                     res.push_back(str);
    21                             }
    22                         }
    23         return res;
    24 
    25     }
    26 };
    27 
    28 
    29 //使用递归
    30 class Solution {
    31 public:
    32     vector<string> restoreIpAddresses(string s) {
    33         vector<string>res;
    34         helper(s, 0, "",res);
    35         return res;
    36     }
    37     void helper(string s, int n, string out, vector<string>&res) {
    38         if (n == 4) {
    39             if (s.empty())res.push_back(out);//全部组合4组IP完毕
    40         }
    41         else {
    42             for (int k = 1; k < 4; ++k) {
    43                 if (s.size() < k)break;
    44                 int val = stoi(s.substr(0, k));//取子串转化为数字
    45                 if (val > 255 || k != to_string(val).size())//当数字大于255或出现010,不满足
    46                     continue;
    47                 helper(s.substr(k), n + 1, out + s.substr(0, k) + (n == 3 ? "" : "."), res);
    48             }
    49         }
    50     }
    51 };
  • 相关阅读:
    12/21
    和寶寶在一起3/10
    11/23
    c#windows应用程序窗体间传值
    用OWC做统计图
    javascript 创建字典
    .NetCom双向数据交换的实现(RecordSet与.Net DataSet的转化)
    JScript 方法 indexOf 方法
    详尽解析window.event对象
    Window.Open详解
  • 原文地址:https://www.cnblogs.com/zzw1024/p/10787627.html
Copyright © 2011-2022 走看看