Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาว่าอาร์เรย์มีสตริงที่มีหนึ่งรายการไม่ตรงกันใน C++ . หรือไม่


สมมติว่าเรามีสตริง s และอาร์เรย์อื่นของสตริง A เราต้องค้นหาว่าอาร์เรย์นั้นมีสตริงที่มีความแตกต่างหนึ่งอักขระจากสตริงปัจจุบันที่มีความยาวต่างกันหรือไม่ สมมติว่าสตริงเป็นเหมือน "กล้วย" และอาร์เรย์มีลักษณะเป็น ["bana", "orange", "banaba", "banapy"] ผลลัพธ์จะเป็นจริงเนื่องจากมี banaba สตริงเดียวที่นี่มีอักขระเดียวเท่านั้น ต่างจากกล้วย

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนบางอย่าง -

  • สำรวจผ่านสตริงที่กำหนด และตรวจสอบทุกสตริงในอาร์เรย์ จากนั้นทำตามขั้นตอนเหล่านี้สำหรับทุกสตริงใน arr -

    • ตรวจสอบว่าสตริงใน arr มีความยาวเท่ากับสตริง s หรือไม่

    • หากความยาวเท่ากัน ให้ตรวจสอบว่ามีอักขระตัวเดียวไม่ตรงกันหรือไม่ ถ้าใช่ ให้คืนค่าจริงหรือเท็จ

ตัวอย่าง

#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