สมมติว่าเรามีสตริง 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