#include <stdio.h>
#include <string.h>
#define MAX_STRING_LENGTH 100
#define MAX_MATCH_STRING_LENGTH 20
#define MAX_ASCII_LENGTH 255
bool check_match(char str[], char match[]);
void mark_ascii_flag(char str[], bool flag[]);
void mark_ascii_flag(char str[], bool flag[])
{
/*
'pointer' & 'while' style
*/
char * pCurr = str;
while(*pCurr)
{
flag[*pCurr] = true;
pCurr++;
}
/*
'for' & 'strlen' style
*/
/*
int i = 0, strLen = strlen(str);
for(i = 0 ; i < strLen ; i++)
flag[str[i]] = true;
*/
}
bool check_match(char str[], char match[])
{
int i, curr_match_idx = 0;
bool match_flag[MAX_ASCII_LENGTH] = {false, };
// make right match flag array
bool comp_match_flag[MAX_ASCII_LENGTH] = {false, };
// O(N+M)
mark_ascii_flag(match, comp_match_flag);
mark_ascii_flag(str, match_flag);
// Compare two Flag Arrays
for(i = 0 ; i < MAX_ASCII_LENGTH ; i++)
{
if(comp_match_flag[i] == true &&
match_flag[i] == false)
return false;
}
return true;
}
void get_input(char str[])
{
printf("Type any letters whatever you want:");
scanf("%s", str);
}
int main()
{
char input_str[MAX_STRING_LENGTH];
char match[MAX_MATCH_STRING_LENGTH] = "IloveKorea";
//get_input(input_str);
// codepad.org 에서는 standard input 을 못 받으므로 대신 처리
// 아래 라인을 주석 처리하고 get_input 라인을 주석 해제하면 입력을 받아서 처리
//strcpy(input_str, "Iabcloabcjdvjse sdkkjKjksdoancrjekka");
strcpy(input_str, "asdjkeorkjdoKKKjjjdvdseksdoljjcmnI");
if(check_match(input_str, match))
printf("I love Korea\n");
return 0;
}