Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- vector<string> restoreIpAddresses(string s) {
- str=s;
- result.clear();
- vector<string> t;
- if(s.size()>12)
- {
- return t;
- }
- deal(0,4);
- for(auto&& a:result)
- {
- string n;
- for(auto num:a)
- {
- n+=to_string(num);
- n+='.';
- }
- n.pop_back();
- t.push_back(n);
- }
- return t;
- }
- int valid(int i,int j)
- {
- string t(str.begin()+i,str.begin()+j+1);
- //cout<<t<<endl;
- if(t.front()=='0'&&t.size()!=1)
- return -1;
- return std::stoi(t);
- }
- void deal(int begin,int remain)
- {
- if(remain==0&&begin==str.size())
- {
- result.push_back(address);
- return;
- }
- for(int i=begin;i<begin+3&&i<str.size();++i)
- {
- auto num=valid(begin,i);
- if(remain==4)
- address.clear();
- if(num>=0&&num<=255)
- {
- address.push_back(num);
- deal(i+1,remain-1);
- address.pop_back();
- }
- }
- }
- vector<vector<int>> result;
- vector<int> address;
- string str;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement