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

หา Uncommon Characters ของสอง Strings ใน C++


โจทย์: กำหนด 2 strings หาตัวอักษรที่ปรากฏใน string ไหน string หนึ่งเท่านั้น (ไม่ปรากฏในทั้งคู่) เรียงลำดับ a-z

ตัวอย่าง: "tutorials", "point" → a l n p r s u

อัลกอริธึม: Frequency Array

  1. Array freq[26] = 0
  2. 2. Scan str1: freq[c-'a'] = 1 3. Scan str2:
    • ถ้า freq = 1 หรือ -1 → set -1 (common)
    • ถ้า freq = 0 → set 2 (only in str2)
    4. Output chars ที่ freq = 1 หรือ 2

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

#include <bits/stdc++.h>
using namespace std;

const int LIM = 26;

void calculateUncommonCharacters(string str1, string str2) {
    int freq[LIM] = {0};
    for (char c : str1) freq[c - 'a'] = 1;
    for (char c : str2) {
        if (freq[c - 'a'] == 1 || freq[c - 'a'] == -1) freq[c - 'a'] = -1;
        else freq[c - 'a'] = 2;
    }
    for (int i = 0; i < LIM; i++)
        if (freq[i] == 1 || freq[i] == 2)
            cout << char(i + 'a') << " ";
}

int main() {
    calculateUncommonCharacters("tutorials", "point");
}

อินพุต

"tutorials", "point"

เอาต์พุท

a l n p r s u

Complexity

  • Time: O(N + M)
  • Space: O(1) (fixed 26)