Provera anagrama

Napisati funkciju koja proverava da li je jedna niska anagram druge.

Ulaz

Sa standardnog ulaza se učitavaju dve rečenice, svaka u zasebnom redu, dužine $n$ ($1 \leq n \leq 1000$). Niske sadrže karaktere iz ASCII skupa karaktera.

Izlaz

Na standardni izlaz ispisati DA ukoliko je prva rečenica anagram druge rečenice, inače ispisati NE.

Primer

Ulaz

stize nam polarna hladnoca
alarmantno sad nalozih pec 

Izlaz

DA

Primer

Ulaz

beogradjani peske do posla po minusu
ispod nule bus krepa i podjose nogama

Izlaz

DA

Primer

Ulaz

ekonomski interes
nekome ste beskorisni

Izlaz

NE

Rešenje

main.c

#include <stdio.h>
#include <ctype.h>

#define MAX_LENGTH 1000

int are_anagrams(const char str1[], const char str2[])
{
	// assuming ASCII character set 
	// initialize all counts to 0
	int count[256] = {0};

	for (int i = 0; str1[i]; i++) {
		if (isalpha(str1[i])) {
			count[str1[i]]++;
		}
	}

	for (int i = 0; str2[i]; i++) {
		if (isalpha(str2[i])) {
			count[str2[i]]--;
		}
	}

	for (int i = 0; i < 256; i++) {
		if (count[i] != 0) {
			return 0; // not anagrams
		}
	}

	return 1; // are anagrams
}

int main(void)
{
	char str1[MAX_LENGTH + 1], str2[MAX_LENGTH + 1];
	
	// for reading lines better use fgets (see later lectures)
	scanf("%1000[^\n]", str1);
	getchar(); // consume the newline character
	scanf("%1000[^\n]", str2);
	getchar(); // consume the newline character

	if (are_anagrams(str1, str2))
	{
		printf("DA\n");
	}
	else
	{
		printf("NE\n");
	}

	return 0;
}