题解 | #数字字符串转化成IP地址#
数字字符串转化成IP地址
http://www.nowcoder.com/practice/ce73540d47374dbe85b3125f57727e1e
递归求解
看题解的时候发现的一个容易理解的代码,标记一下,用递归来解决每一次找小于255的数。 参考来源
class Solution {
public:
/**
*
* @param s string字符串
* @return string字符串vector
*/
vector<string> restoreIpAddresses(string s) {
// write code here
vector<string> ret;
findFitNum(s,ret,vector<string>());
return ret;
}
void findFitNum(string s, vector<string>& ret, vector<string> tmp){
if(s.empty() && tmp.size()==4){
convert(ret,tmp);
return;
}
for(int i = 1; i <= s.size(); i++){
if(i > 1 && s[0]=='0') break;
int num = stoi(s.substr(0,i));
if(num<=255){
tmp.push_back(s.substr(0,i));
findFitNum(s.substr(i), ret, tmp);
tmp.pop_back();
}else break;
}
}
void convert(vector<string>& ret, vector<string> tmp){
string s_tmp;
for(int i = 0; i < tmp.size(); i++){
if(i != tmp.size()-1) tmp[i] += ".";
s_tmp += tmp[i];
}
ret.push_back(s_tmp);
}
};