首页 > 解决方案 > 我已经建立了递归关系,它找到了两个字符串之间最长的连续公共字符串我如何在我的一个字符串中跳过一个字符

问题描述

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,这就是我到目前为止所做的。

标签: c++algorithmc++11recursiongcc

解决方案


假设您使用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


推荐阅读