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

Meta Strings: ตรวจสอบว่าสตริงสองสตริงจะเหมือนกันได้หลังสลับตัวอักษรครั้งเดียว ใน C++


บทนำ

Meta Strings คือสตริงสองสตริงที่คล้ายกันมาก ถ้าสลับตัวอักษรสองตำแหน่งในสตริงหนึ่ง จะได้สตริงอีกอัน

ตัวอย่าง: "HELLO" และ "OELLH" → เป็น Meta Strings (สลับ H กับ O)

ขั้นตอนการตรวจสอบ

  1. ถ้าความยาวต่างกัน → false
  2. นับจำนวนตำแหน่งที่ตัวอักษรไม่ตรงกัน และบันทึกดัชนี (index) ของตำแหน่งเหล่านั้น
  3. ถ้าจำนวนไม่ตรงกันมากกว่า 2 → false
  4. สลับตัวอักษรที่สองตำแหน่งนั้น ถ้าสตริงทั้งสองเหมือนกัน → true มิฉะนั้น false

ตัวอย่างโค้ด C++

#include <iostream>
using namespace std;

bool areTheyMetaString(string s1, string s2) {
    int s1_len = s1.length();
    int s2_len = s2.length();
    if (s1_len != s2_len)
        return false;
    
    int prev = -1, curr = -1;
    int count = 0;
    for (int i = 0; i < s1_len; i++) {
        if (s1[i] != s2[i]) {
            count++;
            if (count > 2)
                return false;
            prev = curr;
            curr = i;
        }
    }
    return (count == 2 && s1[prev] == s2[curr] && s1[curr] == s2[prev]);
}

int main() {
    string s1 = "HELLO", s2 = "OELLH";
    if (areTheyMetaString(s1, s2))
        cout << "Meta Strings";
    else
        cout << "Not Meta Strings";
    return 0;
}

ผลลัพธ์

Meta Strings