codeforces 955B Not simply beatiful strings

题目链接:http://codeforces.com/contest/955/problem/B

题意:给你一个字符串,问能否把字符串分成两份,使得每一份都可以分成由两组,这两组中的每一组都是一个字符的重复,且这两组重复字符不相同。可以输出Yes,否则输出No。

分析:这题写的比较乱,总之如果整个字符串只由一个字符构成或者字符串长度小于4,必然不可以,输出No。如果由两种字符构成,那么只要每种字符个数都大于等于2即可输出Yes。由三种或者四种字符构成长度大于等于4的字符串必然是可以的。字符个数大于4必然是不行的,无法满足单个字符重复这个条件。

AC代码:

 1 #include<bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 map<char,int>mp;
 6 int main(){
 7     ios_base::sync_with_stdio(0);
 8     cin.tie(0);
 9     string s;
10     while(cin>>s){
11         int d=s.size();
12         int ans=0;
13         mp.clear();
14         for(int i=0;i<d;i++){
15             if(mp[s[i]]==0){
16                 ans++;
17             }
18             mp[s[i]]++;
19         }
20         if(d<=3||ans==1){
21             cout<<"No"<<endl;
22         }
23         else if(ans==2){
24             int p=0;
25             for(int i=0;i<d;i++){
26                 if(mp[s[i]]<2){
27                     p=1;
28                     break;
29                 }
30             }
31             if(p==0) cout<<"Yes"<<endl;
32             else cout<<"No"<<endl;
33         }
34         else if(ans>4){
35             cout<<"No"<<endl;
36         }
37         else cout<<"Yes"<<endl;
38     }
39 return 0;
40 }
View Code

 

转载于:https://www.cnblogs.com/ls961006/p/8660780.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值