Я создаю небольшой проект для коррекции орфографии, это не домашнее задание.Число символов, совпадающих между двумя строками в C++
Данные две строки str1 и str2. Нужно выяснить количество символов, совпадающих между двумя строками.
Например, если str1 = "назначить" и str2 = "assingn", то на выходе должно быть 6.
В str2, символы, "а", "с", "с", "я" , «g», «n» находятся в str1, «присваивать». Таким образом, вывод должен быть 6.
Если str1 = "sisdirturn" и str2 = "беспокоить", то вывод должен быть 6.
В str2, символы, "D", "I", "S" , "t", "u", "r" находятся в строке str1, "sisdirturn". Таким образом, выход должен быть равен 0.
Я пробовал много попыток, однако я не могу получить ответ. Пожалуйста, помогите разобраться в этом, и если есть какая-то идея улучшить это, расскажите.
Вот моя попытка до сих пор:
int char_match (string str1, string str2)
{
//Take two strings, split them into vector of characters and sort them.
int i, j, value = 0;
vector <char> size1, size2;
char* cstr1 = new char[str1.length() + 1];
strcpy(cstr1, str1.c_str());
char* cstr2 = new char[str2.length() + 1];
strcpy(cstr2, str2.c_str());
for(i = 0, j = 0 ; i < strlen(cstr1), j < strlen(cstr2); i++, j++)
{
size1.push_back(cstr1[i]);
size2.push_back(cstr2[j]);
}
sort (size1.begin(), size1.end());
sort (size2.begin(), size2.end());
//Start from beginning of two vectors. If characters are matched, pop them and reset the counters.
i = 0;
j = 0;
while (!size1.empty())
{
out :
while (!size2.empty())
{
if (size1[i] == size2[j])
{
value++;
pop_front(size1);
pop_front(size2);
i = 0;
j = 0;
goto out;
}
j++;
}
i++;
}
return value;
}
Можете ли вы объяснить, что вы подразумеваете под «количеством совпадений символов»? В частности, что означает соответствие в этом контексте? – Veritas
@Veritas Например, если str1 = "assign" и str2 = "assingn", тогда выход должен быть 6. В str2 символы «a», «s», «s», «i», «g "," n "находятся в str1," assign ". Таким образом, выход должен быть равен 0. Если str1 = «sisdirturn» и str2 = «беспокоить», тогда выход должен быть 6. В str2 символы «d», «i», «s», «t», , «u», «r» находятся в строке str1, «sisdirturn». Таким образом, выход должен быть равен 0. –
Если у вас есть строки «a» и «aaa», которые должны возвращать 1 или 3? – JarkkoL