zoukankan      html  css  js  c++  java
  • LeetCode93. 复原IP地址

    题目

    给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。

    例如:"0.1.2.201" 和 "192.168.1.1" 是 有效的 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "192.168@1.1" 是 无效的 IP 地址。

    代码

     1 #include<algorithm>
     2 class Solution {
     3 public:
     4     vector<string>res;
     5     // bool check(string s,int start,int end){
     6     //     string s1 = s.substr(start,start-end+1);
     7     //     if((s1[0] == 0 && s1.size() > 1) || stoi(s1) > 255) return false;
     8     //     else return true;
     9     // }
    10     bool check(string s,int start,int end){
    11         if(start > end) return false; 
    12         if(s[start] == '0' && start != end) return false;  //查看是否有前导0
    13         //查看是否在有效IP
    14         int num = 0;
    15         for(int i = start;i <= end;i++){
    16             if(s[i] > '9' || s[i] < '0') return false;
    17             num = num*10 + (s[i] - '0');   //字符串转化为数字
    18             if(num > 255) return false;
    19         }
    20         return true;
    21     }
    22     void backtracking(string s,int startIndex,int pointNum){
    23         if(pointNum == 3){
    24             if(check(s,startIndex,s.size()-1)){
    25                 res.push_back(s);
    26             }
    27             return;
    28         }
    29         for(int i = startIndex;i < s.size();i++){
    30             if(check(s,startIndex,i)){
    31                 s.insert(s.begin()+i+1,'.');
    32                 pointNum++;
    33                 backtracking(s,i+2,pointNum);
    34                 pointNum--;
    35                 s.erase(s.begin()+i+1);
    36 
    37             }else{
    38                 break;
    39             } 
    40         }
    41     }
    42     vector<string> restoreIpAddresses(string s) {
    43         backtracking(s,0,0);
    44         return res;
    45     }
    46 };

    自己写的check函数不知为什么错了?stoi里面的参数不能跟substr吗?老是报错

  • 相关阅读:
    斐波那契数列——兔子问题
    最长上升子序列
    洛谷P1325 雷达安装
    K短路
    DIJ的优化,和spfa的优化
    洛谷P5017摆渡车
    洛谷P2258 子矩阵
    三元表达式、列表推导式和生成器表达式
    递归调用、 二分法
    匿名函数、内置函数
  • 原文地址:https://www.cnblogs.com/fresh-coder/p/14357366.html
Copyright © 2011-2022 走看看