leetcode93. 复原 IP 地址
生活随笔
收集整理的這篇文章主要介紹了
leetcode93. 复原 IP 地址
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一:每日論語解讀
follow me !! 君子坦蕩蕩 小人常威威
二:題目
三:上碼
class Solution { public:/**思路:1.分析題意本題依然是切割字符串(我們需要對要分割的字符串做出處理 需要判斷我們截取的字符串是否合法)2。關于‘.’的處理 我們是在原字符串的基礎上進行插入和刪除 */vector<string>ans;//參數 index 是因為防止出現重復 ,pointNum 是記錄小數點的數量 當小數點的數量為3的時候 我們//就已經切割成了4段void backstacking(string &s,int index,int pointNum) {if(pointNum == 3) {//判斷第四段函數是否合法if(isgoodStr(s,index,s.size()-1)){//字符串最后一位的下標比字符串長度小一ans.push_back(s);}return;}for(int i = index; i < s.size(); i++) {if(isgoodStr(s,index,i)) {pointNum++;s.insert(s.begin()+i+1,'.');//這里插入函數的第一位是代表我們要插入的位置backstacking(s,i+2,pointNum);//插入'.'后下一個字串的起始位置是i+2pointNum--;s.erase(s.begin()+i+1);}else{break;//如果不合法就跳過此層的遍歷}}}//判斷截取的字符串是否合法bool isgoodStr(string &s,int start,int end) {if(start > end) return false;//如果不加上這一步的話 那么就會出現ip 第四個數為空的狀況//如果開頭是0那就不合適 但是單個的0是合適的 所以需要start != endif(s[start] == '0' && start != end) {return false;} int num = 0;//接下倆就是判斷輸入的字符是否超過255 是否合法for(int i = start; i <= end; i++) {if(s[i] > '9' || s[i] < '0'){return false;}num = num*10+(s[i]-'0');if(num > 255) {return false;}}return true;} vector<string> restoreIpAddresses(string s) {backstacking(s,0,0);return ans;} };最近太煩躁了 學習效率還低 晚上聽書的時候 聽到樊登經常解讀論語 來解釋人們遇見的一些困惑 其實仔細想想 也挺對
畢竟流傳了好幾千年 所以這些都是精髓 我們現在遇到的問題 可能我們的祖先早就遇見過了 小時候用腦子背論語
長大后 才明白應該去用心理解論語的真正內涵 人迷茫煩躁的時候 該信些什么呢 我現在相信論語 心平靜了 腦子就不胡思亂想了。
總結
以上是生活随笔為你收集整理的leetcode93. 复原 IP 地址的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Word中如何实现表格求和电脑列表如何求
- 下一篇: 游戏直播到头了游戏在线直播