Leetcode OJ : Restore IP Addresses backtrack暴搜 C++ solution

时间:2023-03-08 15:45:38
 class Solution {
public:
vector<string> ret;
string src;
int len;
unordered_set<string> added;
vector<string> restoreIpAddresses(string s) {
if ( s.empty() ) return ret;
src = s;
len = src.size();
backTrack(,, "");
return ret;
} void backTrack(int pos, int dot_cnt, string substr) {
if ( dot_cnt > ) return;
if ( pos >= len && dot_cnt == ) {
substr.pop_back();
if ( added.find(substr) == added.end() ) {
ret.push_back( substr );
added.insert( substr );
}
return;
}
char buffer[];
int tx = len - pos > ? : len - pos;
for ( int i = ; i <= tx; i++ ) {
string temp = src.substr( pos, i );
int number = atoi( temp.c_str() );
sprintf( buffer, "%d", number );
string str(buffer);
if ( str != temp ) continue;
string newsub = substr + temp + ".";
if ( number >= && number <= ) {
backTrack( pos + i, dot_cnt + , newsub );
}
}
}
};