タイトルはそれをすべて言います - 文字列は空白で区切られた数字でのみ構成されます。 1 0 3 0 4 0 7 0.私がしたいのは、最も頻繁に出現する文字を削除してから1 3 4 7を得ることです。繰り返される数字は常に1つだけです。文字の実際の発生私はこれを試してみましたが、それは唯一の重複を削除し、ない:文字列から最も頻度の高い文字を削除する - 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());
私も文字による文字列の文字をループしようとしましたが、その後、ほとんどが発生しているものを除去するが、それはdoesnのき働いている:
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());
}
}
}
何か助けていただければ幸いです!あなたの文字列を宣言した後:)
迅速な返信をありがとう!私は実際にそれを理解しました - 最も頻繁に発生する文字を見つけるために私の機能を実装しましたが、私は別の問題を抱えています:私の行は次のようになることを忘れていました: – JavaNewb