精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一篇學會復原IP地址!

網絡 通信技術
有效的 IP 地址 正好由四個整數(每個整數位于 0 到 255 之間組成,且不能含有前導 0),整數之間用 '.' 分隔。

[[426350]]

復原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:

  • 輸入:s = "25525511135"
  • 輸出:["255.255.11.135","255.255.111.35"]

示例 2:

  • 輸入:s = "0000"
  • 輸出:["0.0.0.0"]

示例 3:

  • 輸入:s = "1111"
  • 輸出:["1.1.1.1"]

示例 4:

  • 輸入:s = "010010"
  • 輸出:["0.10.0.10","0.100.1.0"]

示例 5:

  • 輸入:s = "101023"
  • 輸出:["1.0.10.23","1.0.102.3","10.1.0.23","10.10.2.3","101.0.2.3"]

提示:

  • 0 <= s.length <= 3000
  • s 僅由數字組成

思路

做這道題目之前,最好先把131.分割回文串這個做了。

這道題目相信大家剛看的時候,應該會一臉茫然。

其實只要意識到這是切割問題,切割問題就可以使用回溯搜索法把所有可能性搜出來,和剛做過的131.分割回文串就十分類似了。

切割問題可以抽象為樹型結構,如圖:

復原IP地址

回溯三部曲

  • 遞歸參數

在131.分割回文串中我們就提到切割問題類似組合問題。

startIndex一定是需要的,因為不能重復分割,記錄下一層遞歸分割的起始位置。

本題我們還需要一個變量pointNum,記錄添加逗點的數量。

所以代碼如下:

  1. vector<string> result;// 記錄結果 
  2.  // startIndex: 搜索的起始位置,pointNum:添加逗點的數量 
  3.  void backtracking(string& s, int startIndex, int pointNum) { 
  • 遞歸終止條件

終止條件和131.分割回文串情況就不同了,本題明確要求只會分成4段,所以不能用切割線切到最后作為終止條件,而是分割的段數作為終止條件。

pointNum表示逗點數量,pointNum為3說明字符串分成了4段了。

然后驗證一下第四段是否合法,如果合法就加入到結果集里

代碼如下:

  1. if (pointNum == 3) { // 逗點數量為3時,分隔結束 
  2.     // 判斷第四段子字符串是否合法,如果合法就放進result中 
  3.     if (isValid(s, startIndex, s.size() - 1)) { 
  4.         result.push_back(s); 
  5.     } 
  6.     return
  • 單層搜索的邏輯

在131.分割回文串中已經講過在循環遍歷中如何截取子串。

在for (int i = startIndex; i < s.size(); i++)循環中 [startIndex, i]這個區間就是截取的子串,需要判斷這個子串是否合法。

如果合法就在字符串后面加上符號.表示已經分割。

如果不合法就結束本層循環,如圖中剪掉的分支:

復原IP地址

然后就是遞歸和回溯的過程:

遞歸調用時,下一層遞歸的startIndex要從i+2開始(因為需要在字符串中加入了分隔符.),同時記錄分割符的數量pointNum 要 +1。

回溯的時候,就將剛剛加入的分隔符. 刪掉就可以了,pointNum也要-1。

代碼如下:

  1. for (int i = startIndex; i < s.size(); i++) { 
  2.     if (isValid(s, startIndex, i)) { // 判斷 [startIndex,i] 這個區間的子串是否合法 
  3.         s.insert(s.begin() + i + 1 , '.');  // 在i的后面插入一個逗點 
  4.         pointNum++; 
  5.         backtracking(s, i + 2, pointNum);   // 插入逗點之后下一個子串的起始位置為i+2 
  6.         pointNum--;                         // 回溯 
  7.         s.erase(s.begin() + i + 1);         // 回溯刪掉逗點 
  8.     } else break; // 不合法,直接結束本層循環 

判斷子串是否合法

最后就是在寫一個判斷段位是否是有效段位了。

主要考慮到如下三點:

  • 段位以0為開頭的數字不合法
  • 段位里有非正整數字符不合法
  • 段位如果大于255了不合法

代碼如下:

  1. // 判斷字符串s在左閉又閉區間[start, end]所組成的數字是否合法 
  2. bool isValid(const string& s, int start, int end) { 
  3.     if (start > end) { 
  4.         return false
  5.     } 
  6.     if (s[start] == '0' && start != end) { // 0開頭的數字不合法 
  7.             return false
  8.     } 
  9.     int num = 0; 
  10.     for (int i = start; i <= end; i++) { 
  11.         if (s[i] > '9' || s[i] < '0') { // 遇到非數字字符不合法 
  12.             return false
  13.         } 
  14.         num = num * 10 + (s[i] - '0'); 
  15.         if (num > 255) { // 如果大于255了不合法 
  16.             return false
  17.         } 
  18.     } 
  19.     return true

C++代碼

根據關于回溯算法,你該了解這些!給出的回溯算法模板:

  1. void backtracking(參數) { 
  2.     if (終止條件) { 
  3.         存放結果; 
  4.         return
  5.     } 
  6.  
  7.     for (選擇:本層集合中元素(樹中節點孩子的數量就是集合的大小)) { 
  8.         處理節點; 
  9.         backtracking(路徑,選擇列表); // 遞歸 
  10.         回溯,撤銷處理結果 
  11.     } 

可以寫出如下回溯算法C++代碼:

  1. class Solution { 
  2. private: 
  3.     vector<string> result;// 記錄結果 
  4.     // startIndex: 搜索的起始位置,pointNum:添加逗點的數量 
  5.     void backtracking(string& s, int startIndex, int pointNum) { 
  6.         if (pointNum == 3) { // 逗點數量為3時,分隔結束 
  7.             // 判斷第四段子字符串是否合法,如果合法就放進result中 
  8.             if (isValid(s, startIndex, s.size() - 1)) { 
  9.                 result.push_back(s); 
  10.             } 
  11.             return
  12.         } 
  13.         for (int i = startIndex; i < s.size(); i++) { 
  14.             if (isValid(s, startIndex, i)) { // 判斷 [startIndex,i] 這個區間的子串是否合法 
  15.                 s.insert(s.begin() + i + 1 , '.');  // 在i的后面插入一個逗點 
  16.                 pointNum++; 
  17.                 backtracking(s, i + 2, pointNum);   // 插入逗點之后下一個子串的起始位置為i+2 
  18.                 pointNum--;                         // 回溯 
  19.                 s.erase(s.begin() + i + 1);         // 回溯刪掉逗點 
  20.             } else break; // 不合法,直接結束本層循環 
  21.         } 
  22.     } 
  23.     // 判斷字符串s在左閉又閉區間[start, end]所組成的數字是否合法 
  24.     bool isValid(const string& s, int start, int end) { 
  25.         if (start > end) { 
  26.             return false
  27.         } 
  28.         if (s[start] == '0' && start != end) { // 0開頭的數字不合法 
  29.                 return false
  30.         } 
  31.         int num = 0; 
  32.         for (int i = start; i <= end; i++) { 
  33.             if (s[i] > '9' || s[i] < '0') { // 遇到非數字字符不合法 
  34.                 return false
  35.             } 
  36.             num = num * 10 + (s[i] - '0'); 
  37.             if (num > 255) { // 如果大于255了不合法 
  38.                 return false
  39.             } 
  40.         } 
  41.         return true
  42.     } 
  43. public
  44.     vector<string> restoreIpAddresses(string s) { 
  45.         result.clear(); 
  46.         if (s.size() > 12) return result; // 算是剪枝了 
  47.         backtracking(s, 0, 0); 
  48.         return result; 
  49.     } 
  50. }; 

總結

在131.分割回文串中我列舉的分割字符串的難點,本題都覆蓋了。

而且本題還需要操作字符串添加逗號作為分隔符,并驗證區間的合法性。

可以說是131.分割回文串的加強版。

在本文的樹形結構圖中,我已經把詳細的分析思路都畫了出來,相信大家看了之后一定會思路清晰不少!

本文轉載自微信公眾號「代碼隨想錄」,可以通過以下二維碼關注。轉載本文請聯系代碼隨想錄公眾號。

 

責任編輯:武曉燕 來源: 代碼隨想錄
相關推薦

2022-01-02 08:43:46

Python

2022-02-07 11:01:23

ZooKeeper

2021-07-06 08:59:18

抽象工廠模式

2023-11-28 08:29:31

Rust內存布局

2023-01-03 08:31:54

Spring讀取器配置

2021-07-02 09:45:29

MySQL InnoDB數據

2021-07-05 22:11:38

MySQL體系架構

2022-08-23 08:00:59

磁盤性能網絡

2021-05-11 08:54:59

建造者模式設計

2022-08-26 09:29:01

Kubernetes策略Master

2022-04-12 08:30:52

回調函數代碼調試

2021-07-16 22:43:10

Go并發Golang

2021-07-02 08:51:29

源碼參數Thread

2021-10-14 10:22:19

逃逸JVM性能

2021-04-29 10:18:18

循環依賴數組

2022-10-20 07:39:26

2023-11-01 09:07:01

Spring裝配源碼

2022-03-11 10:21:30

IO系統日志

2021-10-27 09:59:35

存儲

2023-03-13 21:38:08

TCP數據IP地址
點贊
收藏

51CTO技術棧公眾號

黄色片在线播放| 好看的av在线| 日本免费精品| 亚洲va欧美va天堂v国产综合| 精品在线不卡| 在线观看视频二区| 欧美日韩网站| 亚洲欧美日韩一区在线| 91精品999| 国产激情在线播放| 国产精品私人影院| 国产精成人品localhost| 精品国产xxx| 欧美久久视频| 中文字幕欧美在线| 国产又粗又猛又色| 视频91a欧美| 色综合天天综合网天天狠天天| 正在播放国产精品| 青青青草原在线| 国产精品一区二区x88av| 日本成人在线视频网址| 校园春色 亚洲| 狠狠色丁香婷婷综合影院| 日韩午夜激情免费电影| 日本人视频jizz页码69| av2020不卡| 国产精品天天看| 久久伊人一区| 好吊色一区二区| 久久国产夜色精品鲁鲁99| 91sa在线看| 九九视频免费观看| 久久久久久久久久久9不雅视频| 亚洲欧美激情在线视频| 国产 xxxx| 亚洲一区二区三区日本久久九| 欧美三区免费完整视频在线观看| 亚洲熟妇av日韩熟妇在线| 性欧美videos高清hd4k| 成人免费小视频| 亚洲一区三区在线观看| 国产福利片在线| 久久久www成人免费无遮挡大片| 国产精品一区二区三区免费| 一本色道久久综合亚洲| 美女一区二区久久| 国产精品久久久久久久午夜| 香蕉影院在线观看| 国产精品一区毛片| 26uuu国产精品视频| 五月天婷婷网站| 一本色道久久综合亚洲精品不| 欧美国产日本高清在线| 欧美成人免费看| 欧美久久视频| 久久久久久亚洲精品| 青青草手机视频在线观看| 亚洲老妇激情| 欧美裸身视频免费观看| 久久久久久久久97| 亚洲黄色免费| 17婷婷久久www| 国产免费av一区| 老牛嫩草一区二区三区日本| 国产成人精品在线播放| 久久久国产免费| 久久99国产精品尤物| 成人欧美一区二区三区在线湿哒哒| 在线免费av网| 国产精品主播直播| 国产乱码精品一区二区三区卡 | 亚洲精选国产| 97在线视频精品| 色老头在线视频| 久草中文综合在线| 99久久无色码| 亚洲人妻一区二区| 国产精品三级电影| 超碰人人爱人人| 在线天堂资源| 欧美探花视频资源| 日本少妇激三级做爰在线| 99热这里只有精品首页| 日韩av在线播放资源| 亚洲成人黄色av| 亚洲精品97| 7777免费精品视频| 欧美另类高清videos的特点| 国产毛片精品一区| 精品久久久久亚洲| 欧美一区二区三区| 亚洲电影一级黄| av网址在线观看免费| 亚洲精品大片| 国产视频在线一区二区| 精品亚洲乱码一区二区| 亚洲黄页一区| 成人久久一区二区三区| 狠狠人妻久久久久久综合麻豆| 久久久一区二区三区| 中文字幕一区二区三区有限公司| 超免费在线视频| 精品视频在线免费| 亚洲av成人片色在线观看高潮 | 最近2019中文字幕大全第二页| 国产探花在线播放| 久久亚洲风情| 成人欧美一区二区三区视频xxx| 六十路在线观看| 亚洲另类色综合网站| 免费日韩中文字幕| 国产精品毛片久久久| 色777狠狠综合秋免鲁丝| 日韩黄色a级片| 国产中文字幕精品| 日本精品视频一区| 国产网站在线| 日韩免费高清视频| 国产wwwwxxxx| 久久久亚洲一区| 动漫一区二区在线| 成人片在线看| 欧美日韩国产综合一区二区三区 | 国产视频在线观看一区二区三区| 日韩在线视频在线| 99国内精品久久久久| 亚洲人线精品午夜| 亚洲视频免费播放| 福利视频网站一区二区三区| 午夜啪啪免费视频| 国产精品久久久久77777丨| 亚洲精品在线视频| 日韩免费不卡视频| 国产成人av电影在线| 日本福利视频导航| 亚洲a∨精品一区二区三区导航| 亚洲免费精彩视频| 久久国产视频播放| 99精品在线观看视频| 欧美视频在线第一页| 亚洲欧洲二区| 久久在线观看视频| 国产精品免费无遮挡| 成人免费小视频| 亚洲a级黄色片| 91视频精品| 成人精品视频在线| 黄色精品免费看| 91精品久久久久久久久99蜜臂| 美女三级黄色片| 韩国成人在线视频| 妞干网这里只有精品| 成人污版视频| 欧美成年人视频网站欧美| 国产熟女一区二区三区五月婷| 中文字幕一区二区在线观看| 久久成年人网站| 欧美a级在线| 高清视频一区二区三区| 草草在线视频| 亚洲日本中文字幕| 依依成人在线视频| 亚洲少妇中出一区| 少妇极品熟妇人妻无码| 影音国产精品| 欧美日韩在线高清| 国产精品久久久久久吹潮| xxxx性欧美| 亚洲国产欧美另类| 天天免费综合色| 日本一级免费视频| 精品亚洲aⅴ乱码一区二区三区| 91制片厂免费观看| 福利在线一区| 日韩av不卡在线| 免费网站看v片在线a| 日韩欧美一二三| 在线观看免费国产视频| 国产亚洲美州欧州综合国| 一道本在线免费视频| 欧美精品午夜| 欧美婷婷久久| 成人黄色91| 91国产在线精品| 91精品专区| 日韩美女视频在线| 手机av免费观看| 一区二区三区日韩| 国产夫妻性爱视频| 精品在线一区二区三区| 欧美国产日韩激情| 日韩视频在线观看| 国产精品免费看一区二区三区| 高潮一区二区| 欧美国产日韩精品| 成人免费高清在线播放| 精品久久久影院| 真实新婚偷拍xxxxx| 亚洲在线观看免费| 任你操精品视频| 久久新电视剧免费观看| 人妻少妇偷人精品久久久任期| 国产精品日本欧美一区二区三区| 中文字幕日韩一区二区三区| 香蕉久久夜色精品国产使用方法 | 亚洲综合婷婷久久| 亚洲另类自拍| 国产成人精品免费看在线播放| 亚洲激情77| 99热在线播放| 欧洲亚洲精品久久久久| 欧美一级大片在线观看| 99福利在线| 中文字幕精品一区久久久久| 色就是色亚洲色图| 精品国产网站在线观看| 国产乱码久久久久| 欧美在线视频不卡| 看片网址国产福利av中文字幕| 亚洲精品久久久蜜桃| 国产性猛交xx乱| 国产日韩欧美制服另类| 国产伦精品一区二区免费| 国产精品自拍三区| 午夜免费看毛片| 视频一区二区国产| 欧美成人一区二区在线观看| 国产精品vip| 亚洲中文字幕无码一区二区三区| 91欧美大片| 综合视频免费看| 91欧美在线| 伊人久久大香线蕉av一区| 精品日韩免费| 日韩欧美亚洲v片| 国产一区网站| 欧美一区二区影视| 亚洲资源网你懂的| 久久伦理网站| 九九亚洲视频| 欧美激情专区| 精品国产一区二区三区小蝌蚪| 欧美日韩亚洲在线| 国产在线观看91一区二区三区| 欧美韩国日本精品一区二区三区| 美日韩黄色大片| 精品久久久久久一区二区里番| 麻豆成人入口| 欧美激情论坛| 成人精品视频| 最新欧美日韩亚洲| 亚洲国产精品成人| 国产对白在线播放| 国产精品www.| www.中文字幕在线| 久久精品一区二区三区中文字幕| 久久精品视频91| 日韩国产欧美在线播放| 岛国毛片在线播放| 狠狠色丁香九九婷婷综合五月| 男插女视频网站| 丁香激情综合五月| 先锋资源av在线| 国产亚洲欧美日韩日本| 最新日韩免费视频| 亚洲美女淫视频| 日韩 欧美 精品| 色婷婷精品大在线视频| 懂色av蜜臀av粉嫩av喷吹| 欧美精品一二三区| 高潮毛片7777777毛片| 日韩精品视频在线观看免费| 国产youjizz在线| 超薄丝袜一区二区| 理论不卡电影大全神| 国产91亚洲精品| 日韩精品视频中文字幕| 久久av免费观看| 欧美第一精品| 被灌满精子的波多野结衣| 久久xxxx精品视频| 色噜噜狠狠一区二区三区狼国成人| 成人综合在线观看| 免费人成又黄又爽又色| 亚洲欧美成aⅴ人在线观看| 日韩 欧美 中文| 欧美精三区欧美精三区| 姝姝窝人体www聚色窝| 国产一区二区三区久久精品| 午夜av在线播放| 热99在线视频| 亚洲精品影片| 日本一区二区在线视频观看| 欧美精品91| 999精品视频在线| 成人动漫中文字幕| 极品色av影院| 日本精品一区二区三区高清 | 黑人一区二区三区| 国产伦精品一区二区三区高清| 日韩精品久久| 内射国产内射夫妻免费频道| 另类中文字幕网| 国产偷人妻精品一区| 亚洲激情男女视频| 欧美亚洲另类小说| 精品国产一区二区三区久久影院| av资源种子在线观看| 97在线视频免费观看| 国产欧美88| 色播五月综合| 欧美一级久久| www.88av| 亚洲成人自拍一区| 国产露脸无套对白在线播放| 一区二区三区无码高清视频| 麻豆免费在线| 成人动漫视频在线观看免费| 999国产精品| 亚欧在线免费观看| www国产精品av| 国产精品成人国产乱| 日韩一级成人av| 免费在线你懂的| 国产精品久久久久久久久久三级| 欧美挤奶吃奶水xxxxx| 国产精品三级一区二区| 精品一区二区三区免费播放| 日韩欧美黄色网址| 欧美性猛交xxxx黑人猛交| 人妻无码一区二区三区久久99| 九九久久综合网站| 狂野欧美xxxx韩国少妇| 樱空桃在线播放| 蜜桃精品视频在线观看| 微拍福利一区二区| 91福利国产精品| 国产日韩精品在线看| 国产成人av在线| 九九在线精品| 狠狠热免费视频| 国产欧美日韩综合精品一区二区| 99re国产在线| 一本一本久久a久久精品牛牛影视 一本色道久久综合亚洲精品小说 一本色道久久综合狠狠躁篇怎么玩 | 成年人视频免费在线观看| 日本乱人伦a精品| 九九综合九九| 邪恶网站在线观看| 中文字幕日韩一区二区| 91麻豆国产在线| 操日韩av在线电影| 风间由美中文字幕在线看视频国产欧美| 成人国产一区二区三区| 丁香亚洲综合激情啪啪综合| 精品无码av在线| 日韩电影中文字幕一区| 成人线上视频| 亚洲激情啪啪| 黑人巨大精品欧美一区| 欧美精品videos极品| 亚洲国产成人精品女人久久久 | 69成人在线| 99在线影院| 国产视频欧美| 亚洲综合欧美综合| 91精品国产综合久久蜜臀| 欧美黑人猛交| 蜜桃91精品入口| 蜜臀av性久久久久av蜜臀妖精| 东方av正在进入| 亚洲国产精品人久久电影| 国产精品伦理| 中文字幕不卡每日更新1区2区| 国产成人精品免费看| 亚洲日本韩国在线| 色偷偷88888欧美精品久久久| 精品午夜av| 播放灌醉水嫩大学生国内精品| 国产三级久久久| 性欧美一区二区三区| 欧美亚洲在线播放| 久久精品影视| 久久无码人妻精品一区二区三区| 欧美色综合网站| 婷婷色在线资源| 日韩精品另类天天更新| 国产精品一区专区| 91黑人精品一区二区三区| 久久国产精品久久久久久| 欧美尿孔扩张虐视频| www.精品在线| 天天免费综合色| av网址在线免费观看| 蜜桃精品久久久久久久免费影院| 久久激五月天综合精品| 九九热在线免费观看| 久久精品99久久久久久久久| 色综合www| 最好看的中文字幕|