string - 删除重复的字符串元素 C++
问题描述
该问题包括使用 n 个数字中的 k 个查找所有排列。我能够找到所有排列,但我正在努力尝试删除重复项。我可以成功地比较并找到重复项,但删除它们是我正在努力做的事情。我有一种感觉,我错过了一些简单的东西,但我不知道它是什么。
任何帮助将不胜感激。我已经盯着这个看了一个星期。
这是我现在得到的代码。
void getPermutations(int n, int k)
{
string str = "";
//fill string with numbers <= n
for(int i = 0; i < n; i++)
{
str += to_string(i); //convert numbers to string
}
string tempStr = "";
string outputStr = "";
do {
tempStr = str.substr(0, k);
int compareResult = tempStr.compare(0, k, outputStr, 0, k);
if (compareResult == 0)
{
cout << "| same | ";
outputStr.erase(k,k);
}
outputStr = tempStr;
cout << outputStr << " ";
} while (next_permutation(str.begin(), str.end()));
}
解决方案
- 我认为你的意思是删除tempStr 的内容,而不是 outputStr。
- 擦除的调用并不完全正确。它的第一个参数标记擦除的起始位置,第二个参数告诉要擦除多少个字符。所以如果你想擦除整个字符串,第一个参数应该是......
- 您实际上不必删除任何内容。在您按照自己的方式工作后,请尝试在不擦除的情况下进行操作!
祝你好运!
推荐阅读
- c# - 线程“缓慢”执行
- firebase - 在 org.gradle.api.Project 类型的项目“:app”上找不到参数 [] 的方法 Properties()
- typescript - 在打字稿中创建地图
- checkbox - 在没有 ARRAYFORMULA 的查询中计算选中的复选框
- python - VSCode 远程 Jupyter Notebook - 在 Jupyter Notebook 远程服务器上的特定文件夹中打开现有笔记本
- php - 在准备好的语句中调用 mysqli_commit() 而不是 mysqli_rollback()
- string - 在 VB.net 中将 Byte() 转换为 String 后从 String 中删除 null Char
- react-native - 是否可以关闭drawerBackground屏幕重叠?
- angular - Angular:如何从可观察对象中获取内容?
- java - 多个 if else if 在 JAVA8 中带有 && 条件