c++ - 如何确定两个字符串是否足够接近?

标签 c++ string algorithm

我们说如果它们“足够接近”,我们可以从单词 w1“跳”到单词 w2。如果满足以下条件之一,我们将 w2 定义为与 w1 足够接近:

  1. w2是w1减去一个字母得到的。

  2. w2 是从 w1 中获取的,方法是将 w1 中的一个字母替换为 w1 中出现在其右侧且按字母顺序也位于其右侧的某个字母。

我不知道如何检查 2. 是否满足。 要检查 1. 是否可行,这是我的功能:

bool check1(string w1, string w2){    
    if(w2.length - w1.length != 1){
        return false;
    }
    for(int i = 0,int j = 0;i < w2.length;i++;j++){
        if(w2[i] == w1[j]){//do  nothing
        }
        else if(i == j){
            j++;
        }
        else{
            return false;
        }
    }
    return true;
}

给定两个单词 w1 和 w2,我们如何检查是否可以从 w1 跳到 w2?

最佳答案

你的案例 (1) 的算法对我来说没问题。

要检查情况 (2),您可以首先检查 w2 是否与 w1 具有相同的长度并且恰好相差一个字符。如果是,请检查 w2 的字符是否按字母顺序大于 w1 的字符,以及 w2 的字符是否也出现在 w1 中(或等效地,w2 中)的该位置之后。

您可能还想添加 case (0):w1 和 w2 相同。

关于c++ - 如何确定两个字符串是否足够接近?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13022742/

相关文章:

algorithm - 点集子集的最小周长凸包

c++ - C++是否使用接口(interface)?

string - 使用 intelliJ 将字符串串联重构为 StringBuilder

c++ - 什么是 "::operator new"和 "::operator delete"?

c++ - 将字符串中的字符与给定字符进行比较

java - 我怎样才能剪断这根绳子?

模拟色盲的算法?

java - 查找数组中最大整数的算法

c++ - 如何仅 Hook Windows API 上的键盘焦点

c++ - LLVM 中间表示 : fptoui vs. fptosi