0

如果它们“足够接近”,我们说我们可以从单词 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?

4

1 回答 1

1

您的案例(1)算法对我来说看起来不错。

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

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

于 2012-10-23T02:46:19.380 回答