93. 復原IP地址 - 8月9日
阿新 • • 發佈:2020-08-09
題目
93. 復原IP地址
我的思路
比較明顯,遞迴深搜處理比較方便。設定一個指標指向字串首,每次可以後移1,2,或3個位置。總共需要後移4次,且剛好滑過整個字串。同時要保證每次劃過的數字在0-255之間即可。
我的實現
class Solution { public: vector<string> result; string ss; void process(const int length,int pos,int id,string str) { //cout<<"check"<<pos<<"\t"<<id<<"\t"<<str<<endl;if(pos>length)return; if(id>4&&pos==length){str.erase(str.end()-1);result.push_back(str);} if((5-id)*3<length-pos||(5-id)>length-pos)return; str = str + ss[pos++]; process(length,pos,id+1,str+'.'); if(ss[pos-1]=='0')return; str = str + ss[pos++]; process(length,pos,id+1,str+'.'); str = str + ss[pos++]; if(ss[pos-3]-'0'>2||(ss[pos-2]-'0'>5&&ss[pos-3]-'0'==2)||(ss[pos-2]-'0'==5&&ss[pos-3]-'0'==2&&ss[pos-1]-'0'>5))return; process(length,pos,id+1,str+'.'); } vector<string> restoreIpAddresses(string s) { ss = s; vector<string> a; if(s.size()<4||s.size()>12)return a; int pos = 0; int id = 1; string str; process(s.size(),pos,id,str); return result; } }; /* 取 */