PAT 乙級 1093.字符串A+B C++/Java

題目來源java

給定兩個字符串 AB,本題要求你輸出 A+B,即兩個字符串的並集。要求先輸出 A,再輸出 B,但重複的字符必須被剔除ios

輸入格式:

輸入在兩行中分別給出 AB,均爲長度不超過 106的、由可見 ASCII 字符 (即碼值爲32~126)和空格組成的、由回車標識結束的非空字符串。數組

輸出格式:

在一行中輸出題面要求的 AB 的和。spa

輸入樣例:

This is a sample test
to show you_How it works

輸出樣例:

This ampletowyu_Hrk

分析:

  • 給兩個字符串,把它們合併起來code

  • 依次輸出字符串的每一個字符,輸出過的字符就不輸出了ci

  • 若是map/數組中有這個字符,就不輸出了字符串

    • 不然就輸出字符,並存入map(或者大小爲127的數組)

注意:get

  • 輸入中,空格也是字符串的一部分,所以字符串不能使用cin接收
    • getline(cin, str)能夠接收空格

C++實現:

使用數組string

#include <iostream>
#include <string>

using namespace std;

int main() {
    int m[200] = { 0 };
    string A, B;
    getline(cin, A);
    getline(cin, B);
    string s = A + B;


    for (int i = 0; i < s.size(); ++i) {
        if (m[s[i]] != 1) {
            m[s[i]] = 1;
            cout << s[i];
        }
    }
    return 0;
}

使用unordered_map<char, int>it

#include <iostream>
#include <unordered_map>
#include <string>

using namespace std;


int main() {
    string A, B;
    getline(cin, A);
    getline(cin, B);
    A = A + B;

    unordered_map<char, int> m;

    for (int i = 0; i < A.size(); ++i) {
        if (m[A[i]] != 1) {
            m[A[i]] = 1;
            cout << A[i];
        }
    }
    return 0;
}

Java實現:

// TODO
相關文章
相關標籤/搜索