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吗?老是报错

  • 相关阅读:
    要给自己留时间思考
    联表更新 Update Left Join
    SQLServer2014内存优化表评测
    SQL Server中数据库文件的存放方式,文件和文件组
    {好文备份}SQL索引一步到位
    qt调用js,js调用qt
    【转】vs2010打开qt的.pro文件时错误解决办法
    qt多线程信号槽传输方式
    【转】设置Qt应用程序图标及应用程序名
    【转】Qt多线程操作界面---在QThread更新QProgressBar
  • 原文地址:https://www.cnblogs.com/fresh-coder/p/14357366.html
Copyright © 2011-2022 走看看