Codeforces Round #101 (Div. 2), problem: (A) Amusing Joke 【字符数组strstr()函数使用+string类简便方法】

Codeforces Round #101 (Div. 2), problem: (A) Amusing Joke


题目大意

给你三个字符串,这里我起名为a,b,c 然后我们需要统计a和b中所有字符出现的次数 是否和c中所有字符出现的次数相同


题解

我们可以先将a和b字符串拼接为一个大的字符串ss,然后求出ss字符串的长度与c字符串的长度进行比较 首先,如果长度不相同的话,就没有必要继续判断下去了 直接输出NO

其次,我们对ss和c字符串进行排序 然后我们可以用一个C++ 内置函数 strstr() 这个函数功能挺强的 在区域赛上一个题也是通过这个函数解的话很方便,它能判断一个串是否是另一个串的子串,然后子串是包括本身的

#include<bits/stdc++.h>
using namespace std;
const int maxn=100+10;
char ss[maxn],s1[maxn],s[maxn];
int main(){
    cin>>ss>>s1>>s;
    strcat(ss,s1);
    int n=strlen(ss);
    int m=strlen(s);
    sort(ss,ss+n);
    sort(s,s+m);
    if(n!=m) cout<<"NO"<<endl;
    else{
        if(strstr(s,ss))
            cout<<"YES"<<endl;
        else
            cout<<"NO"<<endl;
    }
    return 0;
}

最后注意,字符个数相同,排序之后不是只用判断两个串是否相等就可以了吗?直接ss==c就输出YES,否则输出NO

是不对的,对于字符数组的话,我们是不能直接判断相等,而是需要逐个比较,然而strstr正好有这个功能

不过对于string来说,简直是太简单了,因为确实是可以直接判断相等的!
而且拼接也很容易

具体代码如下:

#include<bits/stdc++.h>
using namespace std;
int main(){
    string ss,s1,s;
    cin>>ss>>s1>>s;
    ss=ss+s1;
    sort(ss.begin(),ss.end());
    sort(s.begin(),s.end());
    if(ss==s)
        cout<<"YES"<<endl;
    else
        cout<<"NO"<<endl;
    return 0;
}
学如逆水行舟,不进则退
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一百个Chocolate

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值