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

โปรแกรม C++ ตรวจสอบว่าอาร์เรย์มีสตริงที่ต่างกันเพียงหนึ่งตัวอักษรหรือไม่


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