A - 2Char

题意:

给你n个字符串。在任意字符串组合中,找到符合要求的组合字符串的最大长度。组合字符串中的不同字母的个数不能超过2个既符合要求。

思路:

由于字符串的总长不会超过1000,采用暴力即可。我们遍历26个字母中任意两个(可重复)命名为a,b,然后遍历n个字符串,如果字符串中只包含a,b那么它的长度就可以累加到答案里面。最后对每一次遍历后的结果取最大值,即需要的结果。复杂度为26*26*1000

代码:

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int n,ans;
string s[110];
int main(){
    cin>>n;
    for (int i=1; i<=n; i++) cin>>s[i];
    for (int i=0; i<26; i++) {
        for (int j=i; j<26; j++) {
            char a='a'+i,b='a'+j;  //在26个字母中任选两个命名a,b,包括重复。
            int res=0;
            for (int k=1; k<=n; k++) {//遍历字符串数组
                int flag=1;
                for (int l=0; l<s[k].length(); l++) {
                    if (s[k][l]!=a&&s[k][l]!=b) {
                        flag=0;break;
                    }
                }
                if (flag) res+=s[k].length();//如果这个字符串仅包含a,b。那么就符合条件。
            }
            ans=max(ans, res);//对每一次匹配字母最后得到的res 取最大值ans。
        }
    }
    cout<<ans<<endl;
}

 

posted @ 2020-04-27 20:53  驿书达  阅读(138)  评论(0编辑  收藏  举报