0

単語w1から単語w2が「十分に近い」場合、それらから単語に「ホップ」できると言います。次のいずれかが当てはまる場合、w2をw1に十分に近いと定義します。

  1. w2は、1文字を削除することによってw1から取得されます。

  2. w2は、w1の文字の1つを、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;
}

2つの単語w1とw2が与えられた場合、w1からw2に「ホップ」できるかどうかをどのように確認しますか?

4

1 に答える 1

1

ケース(1)のアルゴリズムは、私には問題ないように見えます。

ケース(2)を確認するには、最初にw2の長さがw1と同じで、1文字だけ異なるかどうかを確認します。含まれている場合は、w2の文字がアルファベット順にw1の文字よりも大きいかどうか、およびw2の文字がw1(または同等にw2)のその位置の後に表示されるかどうかを確認します。

ケース(0)を追加することもできます。w1とw2は同じです。

于 2012-10-23T02:46:19.380 に答える