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

时间:2012-10-23 02:32:00

标签: c++ string algorithm

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

  1. w2是通过删除一个字母从w1获得的。

  2. w2是从w1获得的,它将w1中的一个字母替换为w1右侧出现的某个字母,并且字母顺序也是右边的字母。

  3. 我不知道如何检查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 个答案:

答案 0 :(得分:1)

你对案例(1)的算法看起来很好。

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

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