Codeforces Round #604 (Div. 2) A. Beautiful String

【題目鏈接】A題鏈接

【題目類型】模擬

【題目大意】輸入一個t表示有t組測試樣例。每組測試樣例有一個字符串,字符串中含有abc以及?,現在要求你替換字符串中所有的問號,使得字符串滿足不會有連續兩個一樣的字符,如果無法構成則輸出-1如果可以構成則輸出字符串。

【解題思路】就按照題目的意思去模擬,主要是在於判斷這幾個位置的?

開頭連續 ???abcabc
中間連續 abc???abc
末尾連續 abc???
普通位置的都是比較好判斷的 比如a?c中間就是b

還有判斷技巧,判斷一樣不如判斷不一樣,怎麼說呢?看代碼

const int maxn = 1e5+50;
char s[maxn];
int main(){
    int t; RD(t);
    REP(T, t){
        scanf("%s", s+1);
        int len = strlen(s+1);
        bool flag = true;
        for(int i = 1; i <= len; i++){
            if(s[i] == '?'){
                if(s[i-1] != 'a'&& s[i+1]!='a'){
                    s[i] = 'a';
                }
                else if (s[i-1] != 'b'&& s[i+1]!='b'){
                    s[i] = 'b';
                }
                else if (s[i-1] != 'c'&& s[i+1] != 'c'){
                    s[i] = 'c';
                }
            }
            else{
                if(s[i] == s[i-1]){
                    flag = false;
                }
            }
        }
        if(!flag)OT(-1), OT('\n');
        else{
            for(int i = 1; i <= len; i++){
                OT(s[i]);
            }
            OT('\n');
        }

    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章