• 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)

    思路:

    DFS。只需增加判断每个部分数字在0到255之间,并且第一位数不能是0.

    另外代码中用到string转int的方法,先利用c_str()转成C string,再用atoi()与atof()。

    代码:

     1     vector<string> result;
     2     string tmp;
     3     void search(int step, string s){
     4         int l = s.length();
     5         if(l > (5-step)*3 || l < (5-step))
     6             return;
     7         if(step == 4){
     8             if(s[0] == '0' && s.length() > 1)
     9                 return ;
    10             int t = atoi(s.c_str());
    11             if(t >= 0 && t <= 255){
    12                 tmp = tmp + "." + s;
    13                 result.push_back(tmp);
    14             }
    15             return;
    16         }
    17         if(l > 3)
    18             l = 3;
    19         if(s[0] == '0')
    20             l = 1;
    21         for(int i = 1; i <= l; i++){
    22             string s1 = s.substr(0, i);
    23             string s2 = s.substr(i);
    24             int t = atoi(s1.c_str());
    25             if(t >= 0 && t <= 255){
    26                 string pre = tmp;
    27                 if(tmp == ""){
    28                     tmp = s1;
    29                     search(step+1, s2);
    30                     tmp = "";
    31                 }
    32                 else{
    33                     tmp = tmp + "." + s1;
    34                     search(step+1, s2);
    35                     tmp = pre;
    36                 }                
    37             }
    38         }
    39     }
    40     vector<string> restoreIpAddresses(string s) {
    41         // IMPORTANT: Please reset any member data you declared, as
    42         // the same Solution instance will be reused for each test case.
    43         result.clear();
    44         tmp = "";
    45         search(1, s);
    46         return result;
    47     }
  • 相关阅读:
    辅助随笔:因知识点不足暂时错过的题目
    NOIP2019翻车前写(and 抄)过的代码
    NOIP2019翻车前计划以及日记
    Luogu P3706 [SDOI2017]硬币游戏
    Luogu P5296 [北京省选集训2019]生成树计数
    Luogu P3307 [SDOI2013]项链
    Gaussian整数
    Problem. S
    LOJ6696 复读机 加强版
    数据库约束
  • 原文地址:https://www.cnblogs.com/waruzhi/p/3421941.html
Copyright © 2020-2023  润新知