Advertisement
jayati

Generate IP Addresses

Oct 5th, 2023
1,243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.83 KB | None | 0 0
  1. //{ Driver Code Starts
  2. #include <bits/stdc++.h>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. // } Driver Code Ends
  8. /*You are required to complete this method*/
  9.  
  10. class Solution{
  11.   public:
  12.     bool check(string s)
  13.     {
  14.         int n=s.length();
  15.         if(n<0 || n>3)
  16.         {
  17.             return false;
  18.         }
  19.         if(s[0]=='0' && n>1)
  20.         {
  21.             return false;
  22.         }
  23.         int p=stoi(s);
  24.         if(p<0 || p>255 )
  25.         {
  26.             return false;
  27.         }
  28.         return true;
  29.     }
  30.     string generate(string &s,int i,int j,int k,int n)
  31.     {
  32.         string s1=s.substr(0,i);
  33.         string s2=s.substr(i,j-i);
  34.         string s3=s.substr(j,k-j);
  35.         string s4=s.substr(k,n-k);
  36.         if(check(s1) && check(s2) && check(s3) && check(s4))
  37.         {
  38.             return s1+"."+s2+"."+s3+"."+s4;
  39.         }
  40.         return "";
  41.     }
  42.     vector<string> genIp(string &s) {
  43.         // Your code here
  44.        vector<string> ans;
  45.        int n=s.length();
  46.        for(int i=1;i<n-2;i++)
  47.        {
  48.            for(int j=i+1;j<n-1;j++)
  49.            {
  50.                for(int k=j+1;k<n;k++)
  51.                {
  52.                    string st=generate(s,i,j,k,n);
  53.                    if(st.size()>0)
  54.                    {
  55.                        ans.push_back(st);
  56.                    }
  57.                }
  58.            }
  59.        }
  60.        return ans;
  61.        
  62.     }
  63.  
  64. };
  65.  
  66. //{ Driver Code Starts.
  67.  
  68. int main() {
  69.     int T;
  70.     cin >> T;
  71.     while (T--) {
  72.         string s;
  73.         cin >> s;
  74.  
  75.         /*generating naively*/
  76.         Solution obj;
  77.         vector<string> str = obj.genIp(s);
  78.         sort(str.begin(), str.end());
  79.         if(str.size()==0)
  80.             cout << -1 << "\n";
  81.         else{
  82.             for (auto &u : str) {
  83.                 cout << u << "\n";
  84.             }
  85.         }
  86.     }
  87. }
  88. // } Driver Code Ends
Tags: Imp recurssion
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement