My code is not passing all the test cases?
Wrong output for string sort
#include<bits/stdc++.h> using namespace std; bool comparator(string s1, string s2){ if(s1[0]==s2[0]) // if first character is same, then sort according to length return s1.length() > s2.length(); else // else sort lexicographically return s1<s2; } int main(){ int n; // number of strings cin>>n; string str[n]; // string array for(int i=0; i<n; i++){ // input strings cin>>str[i]; } sort(str, str+n, comparator); for(int i=0; i<n; i++){ // display sorted strings cout<<str[i]<<endl; } return 0; }
For this question you can make an array of strings and then sort it according to the condition that if there is a prefix match between two string, sort in decreasing order of length. Use C++ inbuilt sort function with a custom comparator something like this:
bool mycompare( string a, string b)
{
int l1=a.length();int l2=b.length();int flag=-1;
for(int i=0;i<min(l1,l2);i++){
if(a[i]!=b[i])
flag=0;
}
if(flag==-1) // means there is a prefix match
return l1>l2; // so sort decreasing order of length
else
return a<b; //sorting in normal dictionary order when no prefix match
}
Check this with your code and try to correct it. If still doubt is not resolve then please save your code on ide.codingblocks.com and then share its link.
I hope I’ve cleared your doubt. I ask you to please rate your experience here
Your feedback is very important. It helps us improve our platform and hence provide you
the learning experience you deserve.
On the off chance, you still have some questions or not find the answers satisfactory, you may reopen
the doubt.