По заданию нужно определить, сколько вариантов анаграмм можно составить из букв, содержащихся в слове, которое ввёл пользователь. Букв может быть не более 12. Я это реализовал через strlen и факториал количества букв, сама программа достаточно простая (приложил скрин). Я не учёл того,что в слове могут быть одинаковые буквы, нужно считать их за одну. Вопрос, как можно определить, есть ли в слове одинаковые буквы и сколько их? Так же компилятор на телефоне считает одну русскую буквы за две, с латинскими же все норм. Хелп, плз.
Можно сделать очень хитрым путем. Сначала перевести всю строку в нижний регистр, отсортировать массив, удалить повторяющиеся элементы и узнать длину конечной строки.
Пример кода:
#include <iostream>
#include <string>
#include <algorithm>
int main()
{
std::string str = "abbA";
std::transform(str.begin(), str.end(), str.begin(), ::tolower); // Переводим всю строку в нижний регистр
std::sort(str.begin(),str.end()); // Сортируем
str.erase(std::unique(str.begin(), str.end()), str.end()); // Убираем повторяющиеся элементы
std::cout << str.length(); // Выводим количество букв
}
Вы можете проверить эту программу здесь: http://cpp.sh/3e4nf
При использовании русских символов в строке программа не работает. Как это исправить пока не представляю.
Как вариант можно так.
unordered_set<char> set;
for (auto a:word)
set.insert(a);
auto numOfUniqueElem=set.size();
Вот таким образом получили количество букв без повторов. P.s пишу с телефона так что где то мог ошибится в синтаксисе
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Почему под параметр-переменную функции выделяется 4 байта оперативной памяти, если тип short (2 байта)?
Стоит задача:построить график функции на координатной плоскости при помощи WInApiС WinApi сталкиваюсь первый раз
Нужно удалять файлы, в том числе и файлы "Только чтение"Если в свойствах стоит галочка "Только чтение", то через remove() удалить не получается