У меня есть две строки, я хочу знать, равны ли они друг другу. Однако характерный порядок строк был рандомизирован. Также некоторые символы могут быть заменены оператором подстановки (*). Я использую это для обнаружения Anagram.Сравнение строк с помощью подстановочного оператора (*) и рандомизированного порядка - Анаграммы
В этом случае я пытаюсь получить программу анаграммы, я должен сказать, что абы ** является анаграммой авву. Прямо сейчас он может сказать, является ли его анаграммой, если это буквально анаграмма, подобная абба и ббаа. Теперь я пытаюсь понять, как реализовать wildcard *, и я понятия не имею, с чего начать, пожалуйста, помогите!
Что я до сих пор:
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#define SIZE 5
bool areAnagram(char *str1, char *str2)
{
int count[SIZE] = {0};
int i = 0;
for (i = 0; str1[i] && str2[i]; i++)
{
count[str1[i]]++;
count[str2[i]]--;
}
if (str1[i] || str2[i])
{
return false;
}
for (i = 0; i < SIZE; i++)
{
if (count[i])
{
return false;
}
}
return true;
}
int main()
{
char str1[SIZE], str2[SIZE];
FILE *finput;
finput = fopen("input.txt", "r");
fscanf(finput, "%s %s", str1, str2);
printf("%s\n", str1);
printf("%s\n", str2);
if(areAnagram(str1, str2))
{
printf("THEY ARE ANAGRAMS\n");
}
else
{
printf("THEY AREN'T ANAGRAMS\n");
}
}
@TessellatingHeckler abba и bbaa - это анаграммы, и это то, что input.txt установлено на – Vcoss
Теперь я теперь то, что вы имеете в виду. ya thats сломанный код whoops brb – Vcoss
'abaa'' baba' - 'ОНИ - ANAGRAMS' - нет, они все еще нет? Вы инициализируете 'count [SIZE]' массив из 5 элементов, индексы 0,1,2,3,4. Затем вы индексируете его с помощью 'count [str1 [i]]' - str1 - это массив символов, поэтому буква 'a' будет символом ASCII 97, поэтому вы выполняете' count [97] ' массива, который идет 0-4. Я думаю, вы жуете через случайную нераспределенную память. Затем вы пытаетесь найти результаты в пяти местах 'count [i]'. Этот подход может работать, если вы сделали счет достаточно большим и изменили счетчики, но сейчас это принципиально нарушено. – TessellatingHeckler