CodeFoeces-716B

题目

原题链接:B. Complete the Word

题意

判断给定的字串是否包含连续的26字母,'?'可充当任意字符,若存在输出替换'?'后的字串。
数据量较小,可暴力过。

代码

#include<bits/stdc++.h>
using namespace std;
string check(string a){
    int t[26]={0};
    for(int i=0;i<a.size();i++){
        if(a[i]!='?') t[a[i]-'A']=1;
    }
    for(int i=0;i<26;i++){
        for(int j=0;j<a.size();j++){
            if(a[j]=='?' && !t[i]){
                a[j]='A'+i;
                t[i]=1;
            }
        }
    }
    return a;
}
int main() {
    string s;
    cin>>s;
    if(s.size()<26){
        printf("-1\n");
        return 0;
    }
    for(int i=0;i<=s.size()-26;i++){
        string tmp;
        int t=0;
        set<char> tset;
        for(int j=0;j<26;j++){
            tmp+=s[i+j];
            if(s[i+j]!='?') tset.insert(s[i+j]);
            else t++;
        }
        if(tset.size()+t==26){
            tmp=check(tmp);
            for(int k=0;k<i;k++){
                printf("%c",s[k]=='?'?'A':s[k]);
            }
            cout<<tmp;
            for(int k=i+26;k<s.size();k++){
                printf("%c",s[k]=='?'?'A':s[k]);
            }
            return 0;
        }
    }
    printf("-1\n");
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容