【发布时间】:2024-05-17 18:35:02
【问题描述】:
我目前正在尝试删除重复字符。例如:
- maaaaaaa 变成了 ma
- aaaaassssdddddd 变成 asd
我写了以下代码:
string.erase(remove(string.find_first_of(string[i]) + 1, string.end(), string[i]), string.end());
但显然 std::string 返回指向字符串最后一个 + 1 字符的指针,而不是大小,有什么想法可以从字符串中从该字符旁边的位置开始删除 string[i] 吗?
【问题讨论】:
-
你能举个例子输入和想要的输出吗?
-
输入:maaaaaaa 输出:ma 输入:aaasssssssssdddddd 输出:asd
-
您是否想通过一次调用上述代码来做到这一点?因为您在那里指定了一个
i。我不是要求为您的最终目标提供预期输入和预期输出,只是针对给定的代码示例(即您可能需要在预期输入中包含i)。 -
不,这只是一段代码,本杰明解决了我的问题,不过谢谢:)
-
@Frows:对于特定字符的重复不一定都是相邻的输入,您的预期输出是什么,例如:“aaabbbaaabbb”?因为对于您描述的情况,您可以使用
string.erase(std::unique(string.begin(), string.end()), string.end());一次性完成所有操作--