题目链接:https://leetcode-cn.com/problems/restore-ip-addresses/
题目如下:
class Solution { public: vectorrestoreIpAddresses(string s) { if(s.size()>12) return result;//特判 backtracking(s,0,0); return result; } //startIndex必须有,因为不能重复分割,记录下一层递归分割的起始位置 //pointNum,用于记录添加逗点的数量 //注:题目要求,分为四段,则以传统的以字符长度作为跳出递归的条件不符合题意,应该以分的段数作为条件判断是否退出递归 void backtracking(string s,int startIndex,int pointNum){ if(pointNum==3){ if(isVaild(s,startIndex,s.size()-1)){//判断第四段子字符串是否合法,若合法则放入 result.push_back(s); } return ; } for(int i=startIndex;i r){ return false; } if(s[l]=='0'&&l!=r){//不能以0为开头的数字 return false; } int num=0; for(int i=l;i<=r;i++){ if(!isdigit(s[i])){//如果不是数字字符 return false; } num=num*10+s[i]-'0'; if(num>255){//不能大于255 return false; } } return true; } private: vector result; string path; };
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)