Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Meta Strings: Kiểm tra hai chuỗi có thể giống nhau sau một lần hoán vị trong C++

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