//字符串同素:包含相同的char,以及char出现的次数
#include <iostream>
#include <stdio.h>
#include <map>
#include <assert.h>
#include <string.h>
#include "boost/smart_ptr.hpp"
using namespace std;
const int CHAR_NUMBER = 256;//答题的时候,好像写成255了
bool get(char* str,int* arr)
{
if( str == NULL || arr == NULL )
{
return false;
}
memset(arr, 0, sizeof(int) * CHAR_NUMBER);
for( int i = 0; i < strlen(str) ; i++ )
{
arr[static_cast<unsigned char>(str[i])] ++;
}
return true;
}
bool is_common(char* str1, char* str2)
{
assert(str1 != NULL);
assert(str2 != NULL);
int arr1[CHAR_NUMBER];
int arr2[CHAR_NUMBER];
//考试其实有多余的时间,但是当时没有思考,没有检查
//没有考虑优化,及两个字符串的长度不等时,直接返回false
if( strlen(str1) != strlen(str2) )
{
return false;
}
get(str1, arr1);
get(str2, arr2);
for( int i = 0 ; i < CHAR_NUMBER ; i++ )
{
if( arr1[i] != arr2[i] )
{
return false;
}
}
return true;
}
void fourth()
{
char* str1 = "fjf";
char* str2 = "ffj";
cout<<is_common(str1, str2)<<endl;
}
int main()
{
//first();
//second();
//third();
fourth();
//five();
return 0;
}