我们说,如果w1和w2“足够接近”,我们可以从w1跳到w2。我们将w2定义为与w1足够接近,如果满足以下条件之一:
w2通过删除一个字母从w1获得。
w2是从w1中获得的,它将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/

10-10 22:35