我们说如果它们“足够接近”,我们可以从单词w1“跳”到单词w2。如果下列之一成立,我们将w2定义为足够接近w1:
w2是通过删除一个字母从w1获得的。
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?
答案 0 :(得分:1)
你对案例(1)的算法看起来很好。
要检查案例(2),您可以先检查w2是否与w1具有相同的长度,并且恰好相差一个字符。如果是,检查w2的字符是否按字母顺序大于w1的字符,以及w2的字符是否也出现在w1中的该位置之后(或等效地,在w2中)。
你可能还想添加case(0):w1和w2是相同的。