บทนำ
Meta Strings คือสตริงสองสตริงที่คล้ายกันมาก ถ้าสลับตัวอักษรสองตำแหน่งในสตริงหนึ่ง จะได้สตริงอีกอัน
ตัวอย่าง: "HELLO" และ "OELLH" → เป็น Meta Strings (สลับ H กับ O)
ขั้นตอนการตรวจสอบ
- ถ้าความยาวต่างกัน → false
- นับจำนวนตำแหน่งที่ตัวอักษรไม่ตรงกัน และบันทึกดัชนี (index) ของตำแหน่งเหล่านั้น
- ถ้าจำนวนไม่ตรงกันมากกว่า 2 → false
- สลับตัวอักษรที่สองตำแหน่งนั้น ถ้าสตริงทั้งสองเหมือนกัน → 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