สมมติว่าเรามีสตริง s และอีกอาร์เรย์ของสตริง A เราต้องหาว่าอาร์เรย์มีสตริงที่ต่างจากสตริงปัจจุบันเพียงหนึ่งตัวอักษรของความยาวที่ต่างกันหรือไม่ สมมติสตริงเป็น "banana" และอาร์เรย์เป็น ["bana", "orange", "banaba", "banapy"] ผลลัพธ์จะเป็น true เนื่องจากมีสตริง banaba ที่นี่ตัวอักษรเพียงตัวเดียวที่ต่างจาก banana
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนบางอย่าง:
- เดินทางผ่านสตริง s ที่กำหนด และตรวจสอบทุกสตริงในอาร์เรย์ จากนั้นทำตามขั้นตอนเหล่านี้สำหรับทุกสตริงใน arr:
- ตรวจสอบว่าสตริงใน arr มีความยาวเท่ากับสตริง s หรือไม่
- ถ้าความยาวเท่ากัน ให้ตรวจสอบว่ามีการไม่ตรงกันของตัวอักษรเพียงตัวเดียวหรือไม่ ถ้าใช่ คืนค่า true มิฉะนั้น false
ตัวอย่างโค้ด C++
#include <iostream> #include <vector> using namespace std; bool hasOneCharMismatch(vectorarr, 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 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