LeetCode 復原IP地址(探索字節跳動)


題目描述

 

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

示例:

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

 

解題思路

 

遞歸地搜索地址段,對於每個地址首先判斷其是否為'0',若為0則其必須作為一個單獨的地址段,接下來只能判斷其下一個地址段;若不為0,則依次取1-3位數字組成的數作為地址段,注意在取3位的時候要保證其小於256,否則停止加入地址。最后在地址段總數為4且已遍歷到字符串末尾時,將其加入到結果集合中。

 

代碼

 

 1 class Solution {
 2 public:
 3     vector<string> restoreIpAddresses(string s) {
 4         vector<string> res;
 5         findIp(s, 0, 0, "", res);
 6         return res;
 7     }
 8     void findIp(string s, int idx, int part, string temp, vector<string> &res){
 9         if(part == 4 && idx == s.length())
10             res.push_back(temp.substr(0, temp.length() - 1));
11         else if(part < 4){
12             if(s[idx] == '0'){
13                 findIp(s, idx + 1, part + 1, temp + "0.", res);
14                 return;
15             }
16             for(int i = 1; i < 4; i++){
17                 if(idx + i - 1 == s.length()) return;
18                 int address = stoi(s.substr(idx, i));
19                 if(address < 256)
20                     findIp(s, idx + i, part + 1, temp + to_string(address) + ".", res);
21             }
22         }
23     }
24 };

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM