Restore IP Addresses(leetcode)
阿新 • • 發佈:2018-11-09
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)
這道題用可以用三個iterator分割成四個字串,然後對每個字串分析是否合法即可。
需要注意的一點是1.00.1.1這類IP是否合法,(OJ)上認為這類以零開頭的非零數值全部是非法值。但是實際上我認為應該還是算合法的IP地址吧。
class Solution { public: vector<string> restoreIpAddresses(string s) { vector<string> vec; if( s.size() > 12 ) return vec; for( string::iterator i = s.begin() + 1;i < s.end();++i ) { for( string::iterator j = i + 1;j < s.end();++j ) for( string::iterator k = j + 1;k < s.end();++k ) { string str1(s.begin(),i),str2(i,j),str3(j,k),str4(k,s.end()); if( ispos(str1) && ispos(str2) && ispos(str3) && ispos(str4) ) { string str = str1 + '.' + str2 + '.' + str3 + '.' + str4; vec.push_back(str); } } } return vec; } bool ispos( string str ) { int sum = 0; for( string::iterator it = str.begin();it != str.end();++it ) { sum = sum * 10 + *it - '0'; } if( str[0] == '0') { if( str.size() == 1 ) return true; return false; } else { if( sum >= 0 && sum < 256 ) return true; return false; } } };