この2つの文字列が等しいかどうかを比較するにはどうすればいいですか?

1715 ワード

2つの文字列が等しい条件は、文字列の各文字が現れる回数が等しいことです.例えば、abbcdとacdbbは等しい.aはいずれも1回、bはいずれも2回、cはいずれも3回、dはいずれも4回現れるからである.
問題解決の考え方:
追加の配列を使用して、2番目の文字列を追加の配列に割り当て、最初の配列と追加の配列を巡り、同じ文字を見つけると、追加の配列の同じ文字をスペースに割り当てることができます.追加の配列の文字列がすべて空になるまで.
コードは次のとおりです.
#include<iostream>
using namespace std;
int main()
{
	char *str1=(char*)malloc(sizeof(char));
	char *str2=(char*)malloc(sizeof(char));
	char *str3;
	char ch;
	int count=1;
	int i,j;
	while ((ch=getchar())!='
') { count++; str1=(char*)realloc(str1,sizeof(char)*(count)); str1[count-2]=ch; } str1[count-1]='\0'; count=1; while ((ch=getchar())!='
') { count++; str2=(char*)realloc(str2,sizeof(char)*(count)); str2[count-2]=ch; } str2[count-1]='\0'; str3=(char*)malloc(sizeof(char)*count); count=0; while (str2[count]!='\0') { str3[count]=str2[count]; count++; } str3[count]='\0'; for (i=0;i<strlen(str1);i++) { for (j=0;j<strlen(str3);j++) { if (str1[i]==str3[j]) { str3[j]=' '; } } } count=0; for (j=0;j<strlen(str3);j++) { if (str3[j]==' ') { count++; } } if ((count==strlen(str1))&&(count==strlen(str3))) { cout<<" "<<endl; } else { cout<<" "<<endl; } free(str1); free(str2); free(str3); return 0; }