Question1.3:
Given two strings, write a method to decide if one is a permutation of the other.
采用一个256大小的int型数组来计算string中每个char所出现的次数,初始化为0,对第一个string出现一次就+1,对第二个string出现一次就-1
遍历完两个string后检查数组中的int是否仍旧都为0
代码如下:
#include "stdafx.h"
#include <string>
#include <iostream>
const int SIZE = 256;
bool IsPermutation(std::string, std::string);
int main()
{
using namespace std;
//two strings to compare
string str1;
string str2;
cin>>str1>>str2;
bool res = IsPermutation(str1,str2);
if(res)
{
cout<<"Is Permutation"<<endl;
}
else
{
cout<<"Is not Permutation"<<endl;
}
return 0;
}
bool IsPermutation(std::string str1, std::string str2)
{
int *chaCount = new int[SIZE]();
if(str1.size()==str2.size())
{
for(int i=0,size=str1.size();i<size;i++)
{
chaCount[int(str1[i])]++;
}
for(int i=0,size=str2.size();i<size;i++)
{
chaCount[int(str2[i])]--;
}
for(int i=0;i<SIZE;i++)
{
if(chaCount[i]!=0)
{
return false;
}
}
return true;
}
else
{
return false;
}
}