Titel sagt alles - Meine Zeichenkette wird nur durch die Ziffern gebildet, die durch Leerzeichen, z. 1 0 3 0 4 0 7 0. Ich möchte das am häufigsten vorkommende Zeichen entfernen und dann 1 3 4 7 erhalten. Es wird immer nur eine Ziffer geben, die wiederholt wird. Ich habe versucht, diese aber es entfernt nur die Duplikate, nicht das tatsächliche Auftreten des Charakters:Das häufigste Zeichen aus einer Zeichenkette entfernen - C++
string newString = "1 0 3 0 4 0 7 0";
sort(newString.begin(), newString.end());
newString.erase(unique(newString.begin(), newString.end()), newString.end());
ich auch von Zeichen in einer Schleife über die Zeichenfolge versucht habe und dann die, zu entfernen, die am meisten vorkommenden, aber es doesn 't Arbeit:
void countCharacters(const char n[], char count[])
{
int c = 0;
while (n[c] != '\0')
{
if (n[c] >= '0' && n[c] <= '9')
count[n[c] - '0']++;
}
}
void myFunction()
{
string newString = "1 0 3 0 4 0 7 0";
char count[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
const char *charString = newString.c_str();
countCharacters(charString, count);
for (unsigned int z = 0; z < strlen(charString); z++)
{
if (count[z] > 1)
{
newString.erase(remove(newString.begin(), newString.end(), count[z]), newString.end());
}
}
}
Jede Hilfe würde geschätzt werden! :)
Vielen Dank für Ihre schnelle Antwort! Ich habe es tatsächlich herausgefunden - ich habe meine Funktion implementiert, um den Charakter zu finden, der am häufigsten vorkommt, aber jetzt habe ich ein anderes Problem: Ich habe vergessen zu erwähnen, dass meine Zeile so sein kann: – JavaNewb