您的位置:首页 > 其它

leetcode 125: Restore IP Addresses (uncompleted)

2013-04-01 13:09 459 查看
Restore IP AddressesAug
8 '12

Given a string containing only digits, restore it by returning all possible valid IP address combinations.

For example:

Given
"25525511135"
,

return
["255.255.11.135",
"255.255.111.35"]
. (Order does not matter)

class Solution {
public:
vector<string> restoreIpAddresses(string s) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
//  Given "25525511135",
// ["255.255.11.135", "255.255.111.35"]

vector<string> res;
string temp;

ipRec(res, temp, s, 0, 0);
return res;
}

private:
void ipRec(vector<string>& res, string& temp, string& s, int level, int index) {
if(level==4) {
if(index==s.length()) {
temp.pop_back();
res.push_back(temp);
}
return;
}

string t;

for(int i=0; i<3; i++) {
t.push_back(s[index+i]);
if(!isValid(t)) continue;

temp.append(t);
temp.push_back('.');
ipRec(res, temp, s, level+1, index+i+1);
temp.pop_back();
}
}

bool isValid(string s) {
if(s.length()<1 || s.length()>3) return false;

if(s.length()==3 && s[2]==0) return false;
if(s.length()==2 && s[1]==0) return false;

int x=atoi(s.c_str());

if( x>=0 && x<=255) return true;
else return false;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: