假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配,比如:abcda和adabc,由于出现的字符个数都是相同,只是顺序不同,所以这两个字符串是匹配的。要求高效。
#include "iostream"
#include "string"
using namespace std;
const int N=256;
bool ifMatch(string s1,string s2)
{
int a[N]={0};
if(s1.size()!=s2.size())
return false;
else
{
for(int i=0;i<s1.size();i++)
{
a[(int)s1[i]]++;
a[(int)s2[i]]--;
}
for(int j=0;j<N;j++)
{
if(a[j]!=0)
return false;
}
}
return true;
}
void test()
{
string s1="abcdeab";
string s2="bedbaac";
string s3="abadeab";
cout<<ifMatch(s1,s2)<<endl;
cout<<ifMatch(s1,s3)<<endl;
}
int main()
{
test();
return 0;
}