# Runtime error on my C++ qsort based solution

• I have tried the bucket-based anagram comparison, but that sometimes were causing unstable results. So, I resorted to sort based anagram solution (using C qsort). Still, I am getting some runtime err.

Here is what I am doing:

``````class Solution {
static int anacomp(string s1, string s2){
if(s1.length()!=s2.length()){
return s1.length()-s2.length();
}
vector<int> ab(26,0);

for(int i=0;i<s1.length();i++){
ab[s1[i]-'a']++;
ab[s2[i]-'a']--;
}

int val = 0;
int def = 0;

for(int j=0;j<26;j++){
val+=abs(ab[j]);
def+=ab[j]*j;
}

if(val!=0 && def==0) def = val;

return (val==0) ? 0 : def;
}

static bool solfuncstrcomp(string s1, string s2){
return (anacomp(s1,s2)<0);
}

static int anagramcomp(const string s1, const string s2){
int len1 = s1.length();
int len2 = s2.length();
if(len1!=len2) return (len1-len2);

char * str1 = new char [len1+1];
std::strcpy (str1, s1.c_str());
sort(str1,str1+len1);
char * str2 = new char [len2+1];
std::strcpy (str2, s2.c_str());
sort(str2,str2+len2);

return strcmp(str1,str2);
}

static int anacompv(const void *s1, const void *s2){
string a = *((string*)s1);
string b = *((string*)s2);
return anagramcomp(a,b);
}
public:

vector<string> anagrams(vector<string> &strs) {
//sort(strs.begin(),strs.end(),solfuncstrcomp);
qsort(&strs[0], strs.size(), sizeof(string), anacompv);
vector<string> angs;
int n = strs.size();
for(int i=0;i<n;i++){
int preveq=-1, nexteq=+1;
if(i>0) preveq = (anagramcomp(strs[i],strs[i-1]));
if(i<(n-1)) nexteq = (anagramcomp(strs[i],strs[i+1]));
if((preveq==0)||(nexteq==0))
{
angs.push_back(strs[i]);
}
}
return angs;
}  };
``````

What am I doing wrong here? :/
Anyone can help?

BTW, I used another std::sort() based version, which was accept. So, what is wrong happening in qsort(), that is causing this RTE? It won't occur in my machine, so can't debug either :(

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.