CF2167B 题解

· · 题解

思路

开桶,从头到尾遍历,对应位置 s_{1, i} + 1s_{2,i} - 1,再遍历一遍,若非 0 则不满足要求。

代码

#include<bits/stdc++.h>
using namespace std;
int read(){
    int cnt = 0, sign = 1;
    char c = getchar();
    while(!isdigit(c)){
        if(c == '-')    sign = -1;
        c = getchar();
    }
    while(isdigit(c)){
        cnt = (cnt << 1) + (cnt << 3) + (c ^ 48);
        c = getchar();
    }
    return cnt * sign;
}

int main(){
    int T = read();
    while(T--){
        int n = read();
        string a, b;
        cin >> a >> b;
        map <char, int> cnt;
        for(int i = 0; i < n; i++){
            cnt[a[i]]++;
            cnt[b[i]]--;
        }
        bool flag = 0;
        for(char i = 'a'; i <= 'z'; i++){
            if(cnt[i]){
                flag = 1;
            }
        }
        if(flag)    printf("NO\n");
        else    printf("YES\n");
    }
    return 0;
}