數據結構與算法 -3 :復原IP地址





全文字數:1460字html

全文閱讀時間:4分鐘web


【Leetcode】題目描述
算法



給定一個只包含數字的字符串,復原它並返回全部可能的 IP 地址格式。

示例 :

輸入: 「25525511135
輸出: [「255.255.11.135」, 「255.255.111.35」]


基礎知識補充(這裏討論的狀況是IPV4地址)


首先IP從基本大類分共有五種(分別是A、B、C、D、E類網址),觀察這五種網址發現有一個共同點:任何一種IP能夠分爲四段,每段的十進制數值均小於255,全部數字的位數總和(即字符串的長度)不超過12。

看下IPV4各種地址的範圍:
  • A類地址網絡號範圍:1.0.0.0-126.0.0.0微信

  • B類地址網絡號範圍:128.0.0.0-191.255.0.0網絡

  • C地址網絡號範圍:192.0.0.0-223.255.255.0數據結構

  • D類地址範圍:224.0.0.0-239.255.255.255app

  • E類地址範圍:240.0.0.0-255.255.255.254編輯器


更多IP相關知識請參考以下網址: https://www.cnblogs.com/lsgxeva/p/9208298.html


思路提供


瞭解了基礎知識補充的內容以後,是否是以爲很簡單了呢,直接一種暴力的思路,使用4個for循環,每段循環遍歷3次,當且僅當for循環四個變量值之和等於所給字符串長度時,對字符串進行拆分,並判斷每段數字是否符合要求(對於每段的整數,只需考慮其大小是否在0-255之間便可),若符合要求,那麼對已拆分好的字符串進行復原操做(即每段數字以後加上」.」便可)。


代碼展現


  • 復原IP地址[1]學習


class Solution {
public:
vector<string> restoreIpAddresses(string s) {
vector<string> res;
for (int a = 1; a < 4; ++a)
for (int b = 1; b < 4; ++b)
for (int c = 1; c < 4; ++c)
for (int d = 1; d < 4; ++d)
if (a + b + c + d == s.size()) {
int A = stoi(s.substr(0, a));
int B = stoi(s.substr(a, b));
int C = stoi(s.substr(a + b, c));
int D = stoi(s.substr(a + b + c, d));
if (A <= 255 && B <= 255 && C <= 255 && D <= 255) {
string t = to_string(A) + "." + to_string(B) + "." + to_string(C) + "." + to_string(D);
if (t.size() == s.size() + 3) res.push_back(t);
}
}
return res;
}
};


本文總結


在本文中,咱們講解了如何將所給輸入的一串數字轉換成一個可用的IPV4地址,而且咱們也瞭解部分關於IPV4的相關知識,小夥伴們學會了嗎,快去實現一下吧~



參考資料

[1]

【Leetcode】復原IP地址: https://leetcode-cn.com/problems/restore-ip-addresses/flex




- End -



 往期推薦 

🔗



數據結構與算法系列


  1. 數據結構與算法-1 :旋轉圖像
  2. 數據結構與算法 -2 :羅馬數字與整數的相互轉換

畢業設計系列


  1. TensorFlow環境搭建

  2. 畢業設計(基於TensorFlow的深度學習與研究)之文獻翻譯篇

  3. 畢業設計(基於TensorFlow的深度學習與研究)之核心篇CNN-AlexNet詳解

  4. 畢業設計(基於Tensorflow的深度研究與實現)之番外篇

  5. 畢業設計(基於TensorFlow的深度學習與研究)之完結篇

  6. 【東拼西湊】畢業設計之論文查重篇



本站文章搜索推薦





1



長按關注




本文分享自微信公衆號 - hahaCoder(hahaCoder)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索