# Left Factoring Code C++

#include <bits/stdc++.h>
using namespace std;
int main()
{
long long int i,j,k,l,n,m=9999999999,mini,ma=0;
string s[100],st,ch,sc="",result,fs,maxi,rs="";
vector<string>ss;
vector<string>sp;
cin>>n;

for(i=1;i<=n;i++)
{
cin>>s[i];
}
for(i=1;i<=n;i++)
{
st=s[i];
sc="";

for(j=0;j<st.length();j++)
{
if(i==1)
{
fs=st[0];
}
if(st[j]=='=')
{
l=j;
}
}

if(i==1)
{

for(k=l+1;k<st.length();k++)
{
if(st[k]=='|')
{
ss.push_back(sc);
sc="";
}
if(st[k]!='|')
{
ch=st[k];
sc=sc+ch;
}

}
ss.push_back(sc);
}
//cout<<sc<<endl;

}

for(k=0;k<ss.size();k++)
{
mini=ss[k].size();
m=min(m,mini);
maxi=ss[k];
//cout<<ss[k]<<endl;

}
//cout<<maxi<<endl;

for(k=0;k<m;k++)
{
//cout<<ss[0][k]<<endl;
}

for (int i=0; i<m; i++)
{

char current = ss[0][i];

for (int j=1 ; j<ss.size(); j++)
{
if (ss[j][i] != current)
{
break;
}
result.push_back(current);
}

}

for(j=0;j<ss.size();j++)
{
maxi=ss[j];
//cout<<maxi<<result.length()<<endl;
for(k=0;k<maxi.length();k++)
{

if(k>=result.length())
{
rs=rs+maxi[k];

}

//cout<<rs<<endl;

}
if(j!=ss.size()-1)
{
rs=rs+'|';
}
}

cout<<fs<<"="<<result<<fs<<"'"<<endl;
cout<<fs<<"'"<<"="<<rs<<endl;

for(i=2;i<=n;i++)
{
cout<<s[i]<<endl;
}

return 0;

}

Input:

S=ia|ibC
E=b

Output :

S=iS'
S'=a|bC
E=b

## Do you need more Guidance or Help? Then Book 1:1 Quick Call with Me: Click Here

### About Ashadullah Shawon

I am Ashadullah Shawon. I am a Software Engineer. I studied Computer Science and Engineering (CSE) at RUET. I Like To Share Knowledge. Learn More: Click Here
Blogger Comment
Facebook Comment