我们说如果它们“足够接近”,我们可以从单词 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?
最佳答案
你的案例 (1) 的算法对我来说没问题。
要检查情况 (2),您可以首先检查 w2 是否与 w1 具有相同的长度并且恰好相差一个字符。如果是,请检查 w2 的字符是否按字母顺序大于 w1 的字符,以及 w2 的字符是否也出现在 w1 中(或等效地,w2 中)的该位置之后。
您可能还想添加 case (0):w1 和 w2 相同。
关于c++ - 如何确定两个字符串是否足够接近?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13022742/