Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm xem một mảng có chứa một chuỗi có một chuỗi không khớp trong C ++ hay không

Giả sử chúng ta có một chuỗi s và một mảng khác gồm các chuỗi A. Chúng ta phải tìm xem liệu mảng có chứa một chuỗi có sự khác biệt một ký tự so với chuỗi hiện tại có độ dài khác nhau hay không. Giả sử chuỗi giống như “banana” và mảng giống như [“bana”, “cam”, “banaba”, “banapy”], kết quả sẽ là true, vì có một chuỗi Banaba, ở đây chỉ có một ký tự là khác với một quả chuối.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo một số bước -

  • Duyệt qua chuỗi s đã cho và kiểm tra mọi chuỗi trong mảng, sau đó làm theo các bước sau cho mọi chuỗi trong arr -

    • Kiểm tra xem chuỗi trong arr có cùng độ dài với chuỗi s

    • Nếu độ dài giống nhau, hãy kiểm tra xem có bất kỳ ký tự đơn lẻ nào không khớp hay không, nếu có thì trả về true, nếu không thì trả về false.

Ví dụ

#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";
   }
}

Đầu ra -

One character mismatch found