LeetCode 93 復原IP位址

2021-10-03 14:21:34 字數 1321 閱讀 7298

給定乙個只包含數字的字串,復原它並返回所有可能的 ip 位址格式。

示例:輸入: "25525511135"

輸出: ["255.255.11.135", "255.255.111.35"]

於是我們可以遍歷每個字元間隔放置 " . " 的前乙個字串是否滿足要求,如果滿足,則

繼續放置 ".",儲存合法字串,一直到最後用完3個".",之後判斷尾部的字串就可以了,

如果不滿足,拋棄當前上乙個字串,重新遍歷 "."的位置。

1.字串長度大於3。(雖然判了小於0的情況,但是根據遞迴順序,字串字串不可能小於0)

2.字串數字大於255。

3.字串大於1且首字母為0。

如果滿足這三個條件是一定無法構成ip位址的,並且隨著遞迴順序增加,"."的位置只會到更後邊,本次迴圈的下乙個字串必定非法,所以沒畢業繼續進行本次迴圈,return,滿足上乙個合法字元穿字串的操作已經進入遞迴,所以上乙個合法字元字串必須捨棄,重新排列。

#include #include #include using namespace std;

class solution

/* * s : 原始字元

* start: 起始位

* count: 分割的次數

* son : 字串子串

* */

void backtrace(string s, int start, int count, vector& son)

vectortmp(son);

tmp.push_back(temp);

backtrace(s, i, count + 1, tmp);

}} /* 判斷最後一位 */

else if (count == 3)

son.push_back(temp);

string res;

for (int i = 0; i < son.size(); i++)

string last = res.substr(0, res.length() - 1);

m_res.push_back(last);

} }private:

vectorm_res;

/* 判斷是否是ip位址 */

bool judgeisip(string& ip)

if (atoi(ip.c_str()) > 255)

if (ip.length() > 1 && ip[0] == '0')

return true;

}};int main()

return 0;

}

LeetCode93 復原IP位址

首先需要知道ip位址的特性,總共有四段,每段的取值都在 0,255 之間,四段之間用3個 隔開。目標就是如何放置這3個分隔符,使得ip位址是合法的,然後把合法的ip位址記錄下來。方法一 暴力解法。四段的長度都有取1 3的可能性,遍歷所有的情況,記錄合法ip位址。當然類似000,001,00,010這...

leetcode 93 復原IP位址

先判斷字串字串長度是否處於 4,12 然後判斷字串將字串分成從ip位址的第一位進行選擇 ip位址每一位最大為255 最小為0 ip位址的每一位所包含的字串中的位數分別是1 2 3 位 ip位是三位時,要判斷是否大於255 void restore std vector a,std string s,...

LeetCode 93 復原IP位址

給定乙個只包含數字的字串,復原它並返回所有可能的 ip 位址格式。示例 輸入 25525511135 輸出 255.255.11.135 255.255.111.35 只用確認三個點的位置就可以了,所以用三個迴圈來確定點的位置,如果太大了直接continue,如果乙個長度不是1的部分頭部是0,也co...