1 题目描述
现在有一个只包含数字的字符串,将该字符串转化成IP地址的形式,返回所有可能的情况。
例如:
给出的字符串为"25525522135",
返回[“255.255.22.135”, “255.255.221.35”]. (顺序没有关系)
3 代码实现
class Solution {
public:
/**
*
* @param s string字符串
* @return string字符串vector
*/
vector<string> restoreIpAddresses(string s) {
// write code here
vector<string> res;
dfs(s, res, vector<string>());
return res;
}
void dfs(string s, vector<string> &res, vector<string> tmp){
if(s.empty() && tmp.size() == 4) res.push_back(convert(tmp));
for(int i = 1; i <= s.size(); i++){
if(i > 1 && s[0] == '0') break;
int val = stoi(s.substr(0, i));
if(val > 255) break;
tmp.push_back(s.substr(0, i));
dfs(s.substr(i), res, tmp);
tmp.pop_back();
}
}
string convert(vector<string> vec){
string s;
for(int i = 0; i < vec.size(); i++){
s += vec[i];
if(i != vec.size() - 1) s += '.';
}
return s;
}
};
4 运行结果
运行时间:3ms
占用内存:348k