在 C++ 中查詢陣列中是否包含與給定字串只有一個字元不同的字串


假設我們有一個字串 s 和另一個字串陣列 A。我們必須找到陣列中是否包含一個與當前字串只有一個字元不同的字串(長度可以不同)。例如,字串是“banana”,陣列是 [“bana”, “orange”, “banaba”, “banapy”],結果將為真,因為存在字串“banaba”,它與“banana”只有一個字元不同。

為了解決這個問題,我們將遵循以下步驟:

  • 遍歷給定的字串 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 << "One character mismatch found";
   }
   else{
      cout << "One character mismatch not found";
   }
}

輸出:

One character mismatch found

更新於:2019-12-19

128 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.