Hai chuỗi gọi là Meta Strings nếu hoán vị hai ký tự trong một chuỗi thì chúng trở nên giống nhau. Ví dụ: "HELLO" và "OELLH" là Meta Strings.
Các bước kiểm tra:
- Nếu độ dài khác nhau -> false.
- Đếm số ký tự không khớp, lưu vị trí.
- Nếu số ký tự không khớp > 2 -> false.
- Hoán vị hai ký tự đó, nếu chuỗi trùng khớp -> true, ngược lại false.
Ví dụ minh họa
#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 << "Khong phai Meta Strings";
return 0;
}
Kết quả
Meta Strings