c++ - 我已经建立了递归关系,它找到了两个字符串之间最长的连续公共字符串我如何在我的一个字符串中跳过一个字符
问题描述
int lcs(int i, int j, int count)
{
if (i == 0 || j == 0)
return count;
if (X[i-1] == Y[j-1]) {
count = lcs(i - 1, j - 1, count + 1);
}
count = max(count, max(lcs( i, j - 1, 0), lcs( i - 1, j, 0)));
return count;
}
例如: X 包含 AABB 和 Y 包含 AACB 我希望我的递归关系跳过 c 以将 AAB 作为 lCCS,这就是我到目前为止所做的。
解决方案
假设您使用std::string
,您可以通过它从字符串中删除一个字符erase
:
std::string A{"AACB"};
std::string copy = A; // make a copy to keep the original
copy.erase(2); // erase character at pos 2
std::cout << copy; // prints AAB
如果您不知道要提前删除哪个字符,您可以尝试循环中的所有字符,并在循环中删除一个字符后调用您的函数X
和另一个字符串。Y
推荐阅读
- wordpress - Woocommerce 面包屑
- javafx - 如何将 TextArea 打印到 58 毫米 USB 热敏打印机?(JAVAFX)
- python - 如何正确格式化此 API 调用?
- algorithm - 通过仅删除一个字符来形成字典上的小字符串
- python - 从 html 文件中提取文本会导致属性错误
- javascript - Safari Mobile 上的 Firebase 存储提供存储/未知错误
- objective-c - 被移除的通知
- reactjs - 如何在没有 Redux 的情况下从任何地方更改组件的状态?
- vba - 遍历文件夹和子文件夹,将路径和文件名作为文本插入标题,打印,关闭而不保存
- asp.net-mvc - 使用 jQuery UI 自动完成返回 ArgumentNullException