Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2017
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. class Solution {
  2. public:
  3. vector<string> restoreIpAddresses(string s) {
  4.  
  5. str=s;
  6. result.clear();
  7. vector<string> t;
  8. if(s.size()>12)
  9. {
  10. return t;
  11. }
  12. deal(0,4);
  13.  
  14. for(auto&& a:result)
  15. {
  16. string n;
  17. for(auto num:a)
  18. {
  19. n+=to_string(num);
  20. n+='.';
  21. }
  22. n.pop_back();
  23. t.push_back(n);
  24. }
  25. return t;
  26. }
  27.  
  28. int valid(int i,int j)
  29. {
  30. string t(str.begin()+i,str.begin()+j+1);
  31. //cout<<t<<endl;
  32. if(t.front()=='0'&&t.size()!=1)
  33. return -1;
  34. return std::stoi(t);
  35. }
  36.  
  37. void deal(int begin,int remain)
  38. {
  39. if(remain==0&&begin==str.size())
  40. {
  41. result.push_back(address);
  42. return;
  43. }
  44.  
  45. for(int i=begin;i<begin+3&&i<str.size();++i)
  46. {
  47. auto num=valid(begin,i);
  48. if(remain==4)
  49. address.clear();
  50. if(num>=0&&num<=255)
  51. {
  52. address.push_back(num);
  53. deal(i+1,remain-1);
  54. address.pop_back();
  55. }
  56. }
  57. }
  58.  
  59. vector<vector<int>> result;
  60. vector<int> address;
  61. string str;
  62. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement