【发布时间】:2016-11-10 01:06:45
【问题描述】:
标题说明了一切 - 我的字符串只能由空格分隔的数字组成,例如1 0 3 0 4 0 7 0。我想要做的是删除最常出现的字符,然后得到 1 3 4 7。总会有一个数字重复。我试过了,但它只删除了重复项,而不是字符的实际出现:
string newString = "1 0 3 0 4 0 7 0";
sort(newString.begin(), newString.end());
newString.erase(unique(newString.begin(), newString.end()), newString.end());
我也尝试过逐个字符循环遍历字符串,然后删除最常出现但不起作用的字符串:
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());
}
}
}
任何帮助将不胜感激! :)
【问题讨论】: