XJOI1级19段 c++ 爱丽丝的卡片

爱丽丝的卡片
时间:0.2s 空间:32M

题目描述:
爱丽丝有一个由小写字母构成的字符串,字符串被写在了墙上。

同时,她还有一堆卡片,每张卡片上写着一个字母,爱丽丝可以取出若干张卡片,覆盖墙上的一些字母。(也可以一张都不取)

她希望覆盖之后新的字符串字典序尽可能大。帮她找出覆盖之后字典序最大的字符串吧。

输入格式:
第一行输入一个字符串,表示墙上的字符串。
第二行输入一个字符串,表示爱丽丝手上拥有的字母。

输出格式:
输出一行,包含一个字符串

约定:
字符串长度<=50,都由小写字母构成

img

img


可以啦


#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int main() {
    string wall, cards;
    cin >> wall >> cards;

    sort(cards.rbegin(), cards.rend());

    int i = 0, j = 0;
    while (i < wall.length() && j < cards.length()) {
        if (cards[j] > wall[i]) {
            wall[i] = cards[j];
            j++;
        }
        i++;
    }

    cout << wall << endl;

    return 0;
}