查找数组是否包含C ++中一个不匹配的字符串

假设我们有一个字符串s和另一个字符串数组A。我们必须查找该数组是否包含与当前长度不同的字符串有一个字符差异的字符串。假设字符串像“ banana”,而数组看起来像[“ bana”,“ orange”,“ banaba”,“ banapy”],则结果为true,因为有一个字符串banaba,这里只有一个字符是与香蕉不同。

为了解决这个问题,我们将遵循一些步骤-

  • 遍历给定的字符串s,并检查数组中的每个字符串,然后对arr中的每个字符串执行以下步骤-

    • 检查arr中的字符串与s的长度是否相同

    • 如果长度相同,则检查是否有任何单个字符不匹配,如果是,则返回true,否则返回false。

示例

#include<iostream>
#include<vector>
using namespace std;
bool hasOneCharMismatch(vector<string>arr, string s) {
   int n = arr.size();
   if (n == 0)
      return false;
   for (int i = 0; i < n; i++) {
      if (arr[i].size() != s.size())
         continue;
      bool difference = false;
      for (int j = 0; j < (int)arr[i].size(); j++) {
         if (arr[i][j] != s[j]) {
            if (!difference)
               difference = true;
            else {
               difference = false;
               break;
            }
         }
      }
      if (difference)
         return true;
   }
   return false;
}
int main() {
   vector<string> arr;
   arr.push_back("bana");
   arr.push_back("orange");
   arr.push_back("banaba");
   arr.push_back("banapy");
   if(hasOneCharMismatch(arr, "banana")){
      cout << "发现一个字符不匹配";
   }
   else{
      cout << "找不到一个字符不匹配";
   }
}

输出-

发现一个字符不匹配