至少以两种不同效率的算法实现P30 习题1.4-10
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
//算法1:排序法
bool sortAlgorithm(string s1,string s2){
if(s1.length()!=s2.length()||!s1.compare(s2) )return false;
sort(s1.begin(),s1.end());
sort(s2.begin(),s2.end());
for(int i=0;i<s1.length();i++){
if(s1[i]!=s2[i]) return false;
}
return true;
}
//算法2:计数法
bool countAlgorithm(string s1,string s2){
if(s1.length()!=s2.length()||!s1.compare(s2) )return false;
int cnt[78];
memset(cnt,0,sizeof(cnt));
for(int i=0;i<s1.length();i++){
cnt[s1[i]-'0']++;
cnt[s2[i]-'0']--;
}
for(int k=0;k<78;k++){
if(cnt[k]) return false;
}
return true;
}
int main(){
string s1,s2;
cin>>s1>>s2;
cout<<sortAlgorithm(s1,s2)<<endl;
cout<<countAlgorithm(s1,s2)<<endl;
return 0;
}