题目链接:http://codeforces.com/problemset/problem/716/B

题目大意:

  给出一个字符串,判断其是否存在一个子串(满足:包含26个英文字母且不重复,字串中有‘?’表示占位符可表示字母),如果存在则输出该字串‘?’位置用替换后的字母代替,其他不在子串中的‘?’用字母代替即可。如果该字串不存在满足条件的子串,则输出-1.

举例:

----------------------------------

input
ABC??FGHIJK???OPQR?TUVWXY?
output
ABCDEFGHIJKLMNOPQRZTUVWXYS

------------

input
ABC??FGHIJK???OPQR?TUVWXY?WW??W
output
ABCDEFGHIJKLMNOPQRZTUVWXYSWWAAW

-------------

input
AABCDEFGHIJKLMNOPQRSTUVW??M
output
-1

--------------------------------------

解题思路:

  暴力即可。

  首先判断是否满足长度为26,<26 直接输出 -1.

否则:双重for 扫描,内循环每次从 i -> i+25 即可,如果 字符出现的个数+?的个数=26,则该子串满足,则记录左边的下标即可。

然后找出没有出现的字符,放在数组x[]。for循环,从记录下标开始-》下标+25,如果是‘?’,则用x[k++]代替‘?’。替换完子串‘?’,遍历整个字串,如果是‘?’用‘A’代替即可。

然后输出。

-->本次代码写low了。。。见谅。

AC Code:

 #include<bits/stdc++.h>
using namespace std;
const int N=+;
char ca[N];
int main()
{
int i,j; while(scanf("%s",ca)!=EOF)
{ if(strlen(ca)<)
{
printf("-1\n");
continue;
}
int cut,l,r,w;int dp[];
for(i=; i<strlen(ca); i++)
{
memset(dp,,sizeof(dp));
cut=w=l=r=;
for(j=i; j<i+; j++)
if(ca[j]=='?')w++;
else if(!dp[ca[j]]&&(int)ca[j]!=)
++cut,dp[ca[j]]=;
if(cut+w==)
{
l=i;
r=l+;
break;
}
}
if(r==)
{
printf("-1\n");
continue;
}
else
{
char s[],tem[];
int k=,x,w;
for(x=l; x<=l+; x++)
if(dp[ca[x]])s[k++]=ca[x];
k=;
for(x=; x<=; x++)
{
int flag=;
for(w=; w<strlen(s); w++)
{
if((int)s[w]-'A'==x)
{
flag=;
break;
}
}
if(flag)tem[k++]=(char)(x+'A');
}
k=;
for(x=l; x<=l+; x++)
if(ca[x]=='?')ca[x]=tem[k++];
for(i=; i<strlen(ca); i++)
if(ca[i]=='?')ca[i]='A';
puts(ca);
}
}
return ;
}

CodeForces 716B Complete the Word的更多相关文章

  1. Codeforces 716B Complete the Word【模拟】 (Codeforces Round #372 (Div. 2))

    B. Complete the Word time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  2. codeforces 372 Complete the Word(双指针)

    codeforces 372 Complete the Word(双指针) 题链 题意:给出一个字符串,其中'?'代表这个字符是可变的,要求一个连续的26位长的串,其中每个字母都只出现一次 #incl ...

  3. Codeforces Round #372 (Div. 2) A .Crazy Computer/B. Complete the Word

    Codeforces Round #372 (Div. 2) 不知不觉自己怎么变的这么水了,几百年前做A.B的水平,现在依旧停留在A.B水平.甚至B题还不会做.难道是带着一种功利性的态度患得患失?总共 ...

  4. B. Complete the Word(Codeforces Round #372 (Div. 2)) 尺取大法

    B. Complete the Word time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  5. Complete the Word CodeForces - 716B

    ZS the Coder loves to read the dictionary. He thinks that a word is nice if there exists asubstring  ...

  6. Complete the Word

    ZS the Coder loves to read the dictionary. He thinks that a word is nice if there exists a substring ...

  7. CodeForces 715B Complete The Graph 特殊的dijkstra

    Complete The Graph 题解: 比较特殊的dij的题目. dis[x][y] 代表的是用了x条特殊边, y点的距离是多少. 然后我们通过dij更新dis数组. 然后在跑的时候,把特殊边都 ...

  8. Codeforces 1182D Complete Mirror [树哈希]

    Codeforces 中考考完之后第一个AC,纪念一下qwq 思路 简单理解一下题之后就可以发现其实就是要求一个点,使得把它提为根之后整棵树显得非常对称. 很容易想到树哈希来判结构是否相同,而且由于只 ...

  9. Codeforces 1182D Complete Mirror 树的重心乱搞 / 树的直径 / 拓扑排序

    题意:给你一颗树,问这颗树是否存在一个根,使得对于任意两点,如果它们到根的距离相同,那么它们的度必须相等. 思路1:树的重心乱搞 根据样例发现,树的重心可能是答案,所以我们可以先判断一下树的重心可不可 ...

随机推荐

  1. Linux开机后 systemd 自动启动 ceph osd mon进程

    机房操作失误导致机架或主机掉电是偶尔发生的事情,那么怎么在这种情况下,让Ceph服务随OS启动而快速启动呢 ? 如下是一个简单方法: 在OSD主机上执行如下命令: sudo ln -s /usr/li ...

  2. Qt做动画旋转旋转图片

    今天看到百度首页的音乐播放有个图片可以旋转,感觉很酷就用qt做了一个类似的,关键时刻还是要发挥数学功底,静下心来,写一写,画一画,编程对数学分析能力要求还是不小的,以后要经常锻炼数学分析能力啊! Wi ...

  3. 网页提示[Not allowed to load local resource: file://XXXX]错误

    网页通过http 访问时, 点击打开文件的link.在Chrome 中会报 Not allowed to load local resource: file// XXXX 的错误 <!--Add ...

  4. Maven-通过命令操作maven项目

    用Maven 命令创建一个简单的Maven项目 在cmd中运行如下命令: mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId ...

  5. 【POJ 2406】Power Strings(KMP循环节)

    终于靠着理解写出KMP了,两种KMP要代码中这种才能求循环节.i-next[i]就是循环节. #include<cstdio> #define N 1000005 char s[N]; i ...

  6. Mysql 中 iddata1的缩小步骤

    原因就不多说了,,,, 直接上干货. 1. 备份数据库 mysqldump -q -uroot -ppassword --add-drop-table --all-databases >all1 ...

  7. BZOJ 2080: [Poi2010]Railway 双栈排序

    2080: [Poi2010]Railway Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 140  Solved: 35[Submit][Statu ...

  8. 【BZOJ-1926】粟粟的书架 二分 + 前缀和 + 主席树

    1926: [Sdoi2010]粟粟的书架 Time Limit: 30 Sec  Memory Limit: 552 MBSubmit: 616  Solved: 238[Submit][Statu ...

  9. eclipse中xml文件不能自动提示的解决办法

    1.出现不能提示的情况

  10. 【bzoj1500】 noi2005—维护数列

    http://www.lydsy.com/JudgeOnline/problem.php?id=1500 (题目链接) 题意 要求维护数列,操作有区间删除,区间插入,区间反转,区间修改,区间求和,求最 ...