zoukankan      html  css  js  c++  java
  • A

    题意:给你一串只含a、b、c、?的字符串s,?可以换成a/b/c,要求两两相邻不能相同,如果存在则输出任一种,否则输出-1;

    思路:(只有当所给的字符串含两个相邻相同的这种情况才会输出-1)

       循环走到s[i]==‘?’的时候,先与s[i-1]做比较,s[i]=(s[i-1]-'a'+1)%3+'a',往后移一个,如果第一个就为?,则直接存a;再和s[i+1]做比较,如果s[i]==s[i+1],

    那么s[i]=(s[i]-'a'+1)%3+'a',再往后移一个。

    #include<bits/stdc++.h>
    #define N 1e5+10
    using namespace std;
    int main(){
            int t,i,flag;
            char s[int(N)];
            while(~scanf("%d%*c",&t)){
                    while(t--){
                            gets(s);
                            for(i=0;s[i]!='';i++){
                                    if(s[i]=='?'){
                                            if(i!=0){
                                                    s[i]=(s[i-1]-'a'+1)%3+'a';
                                            }else{
                                                    s[i]='a';
                                            }
                                            if(s[i+1]==s[i]){
                                                    s[i]=(s[i]-'a'+1)%3+'a';
                                            }
                                    }
                            }
                            for(i=flag=0;i<strlen(s)-1;i++){
                                    if(s[i]==s[i+1])
                                           flag=1;
                            }
                            if(flag==1)
                                    printf("-1
    ");
                            else printf("%s
    ",s);
                    }
            }
    }
    View Code

       

  • 相关阅读:
    webform传值
    webform控件以及使用
    SQL Server 基本数据类型
    数据库设计三大范式
    第一阶段考试
    弹出层
    三级联动日期选择
    DOM例题
    JS方法
    DOM
  • 原文地址:https://www.cnblogs.com/DreamingBetter/p/12197701.html
Copyright © 2011-2022 走看看