У меня есть проблема, которую я действительно не знаю, как решить.Мне нужно посчитать, сколько символов DISTINCT содержится в моей строке.
Например.
/
ВХОД: wjmzbmr
ВЫХОД: 6
/
Так как 'm' отображается дважды, он должен посчитать его один раз.
Моя основная мысль - отсортировать строку перед проверкой символов и затем подсчитать ДУБЛИКАТЫ.Когда я закончу подсчет количества дубликатов, я просто вычитаю длину строки с моим счетчиком дубликатов.
Вот код.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string input;
char temp;
cin >> input;
for(int i=0;i<input.length();i++)
{
for(int j=i;j<input.length();j++)
{
if(input[i] > input[j])
{
temp = input[i];
input[i] = input[j];
input[j] = temp;
}
}
}
//SORTED STRING PRINT HERE
cout<<input<<endl;
int counter=0;
for(int i=0;i<input.length()-1;i++)
{
if(input[i]==input[++i])
{
counter++;
}
}
int new_length = input.length() - counter;
cout<<"DUPLICATES: "<<counter<<endl;
cout<<"STRING LENGTH: "<<input.length()<<endl;
cout<<"WITHOUT DUPLICATES: "<<new_length<<endl;
return 0;
}
По некоторым причинам эта вещь не будет работатьна любой строке.Допустим, у меня есть такая строка:
/
INPUT: pppppp
ВЫХОД: 3
/
PS I 'Мы предоставили несколько выходов, чтобы проверить, в чем проблема.Я не мог найти это, поэтому я пишу здесь.Заранее спасибо, ребята.