CodeForces 716B Complete the Word
题目链接:http://codeforces.com/problemset/problem/716/B
题目大意:
给出一个字符串,判断其是否存在一个子串(满足:包含26个英文字母且不重复,字串中有‘?’表示占位符可表示字母),如果存在则输出该字串‘?’位置用替换后的字母代替,其他不在子串中的‘?’用字母代替即可。如果该字串不存在满足条件的子串,则输出-1.
举例:
----------------------------------
ABC??FGHIJK???OPQR?TUVWXY?
ABCDEFGHIJKLMNOPQRZTUVWXYS
------------
ABC??FGHIJK???OPQR?TUVWXY?WW??W
ABCDEFGHIJKLMNOPQRZTUVWXYSWWAAW
-------------
AABCDEFGHIJKLMNOPQRSTUVW??M
-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的更多相关文章
- 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 ...
- codeforces 372 Complete the Word(双指针)
codeforces 372 Complete the Word(双指针) 题链 题意:给出一个字符串,其中'?'代表这个字符是可变的,要求一个连续的26位长的串,其中每个字母都只出现一次 #incl ...
- Codeforces Round #372 (Div. 2) A .Crazy Computer/B. Complete the Word
Codeforces Round #372 (Div. 2) 不知不觉自己怎么变的这么水了,几百年前做A.B的水平,现在依旧停留在A.B水平.甚至B题还不会做.难道是带着一种功利性的态度患得患失?总共 ...
- 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 ...
- Complete the Word CodeForces - 716B
ZS the Coder loves to read the dictionary. He thinks that a word is nice if there exists asubstring ...
- Complete the Word
ZS the Coder loves to read the dictionary. He thinks that a word is nice if there exists a substring ...
- CodeForces 715B Complete The Graph 特殊的dijkstra
Complete The Graph 题解: 比较特殊的dij的题目. dis[x][y] 代表的是用了x条特殊边, y点的距离是多少. 然后我们通过dij更新dis数组. 然后在跑的时候,把特殊边都 ...
- Codeforces 1182D Complete Mirror [树哈希]
Codeforces 中考考完之后第一个AC,纪念一下qwq 思路 简单理解一下题之后就可以发现其实就是要求一个点,使得把它提为根之后整棵树显得非常对称. 很容易想到树哈希来判结构是否相同,而且由于只 ...
- Codeforces 1182D Complete Mirror 树的重心乱搞 / 树的直径 / 拓扑排序
题意:给你一颗树,问这颗树是否存在一个根,使得对于任意两点,如果它们到根的距离相同,那么它们的度必须相等. 思路1:树的重心乱搞 根据样例发现,树的重心可能是答案,所以我们可以先判断一下树的重心可不可 ...
随机推荐
- 安卓 Context 和 Application的关系
1. 我开始一直不理解显式Intent中传一个this(当前的activity)是为什么.因为Intent里面的构造方法对应的只有 Context, Class.后面查资料才发现 Intent i = ...
- java 数据绑定的几种方式及相关注意事项-持续更新
spring mvc 中会遇到各种数据绑定,有些不常用的,但是千万不要觉得不可以,没有什么是不可以的,只要能够想到,就可以. 数据绑定方式: 1. 注意: 当数据为包装类型的数字型时,如果Long h ...
- Android中图片的处理(放大缩小,去色,转换格式,增加水印等)(转)
原文地址:http://menxu.lofter.com/post/164b9d_3ebf79 package com.teamkn.base.utils; import java.io.ByteAr ...
- 在编译php事务时候出现如下错误,具体原因不知,不过解决了
在make的时候出现如下错误 libtool: link: `ext/date/lib/parse_date.lo' is not a valid libtool objectmake: *** [l ...
- Oracle数据库下sde用户系统表开放权限sql语句
--sde用户登陆执行以下语句 grant insert, update, delete on sde.table_registry to PUBLIC; grant insert, update, ...
- Oracle查询所有序列
--查看当前用户的所有序列 select SEQUENCE_OWNER,SEQUENCE_NAME from dba_sequences where sequence_owner='用户名'; --查 ...
- Android进程回收机制LMK(Low Memory Killer)
熟悉Android系统的童鞋都知道,系统出于体验和性能上的考虑,app在退到后台时系统并不会真正的kill掉这个进程,而是将其缓存起来.打开的应用越多,后台缓存的进程也越多.在系统内存不足的情况下,系 ...
- HTLM4与HTML5的区别
准确的说应该是HTML4与HTML5的区别 主要区别: 1.doctype头的改变 2.html5中多出了很多标签和属性 还有一个要注意的是,我们通常说html5时会自动关联上css3,其实我理解的, ...
- androidstudio 常用快捷键
ctrl+p 查看需要输入的函数列表 ctrl+h 查看继承关系 ctrl +w 选择一个,一行,一段. alter+enter 内容助理 ctrl+q 查看方法注解 相当于 hover ...
- alias重启终端失效的问题
如果使用命令 alias xx='xxxx' 那么登出以后,别名就会失效.下次登入的时候就不能用了. 为了保持别名可以把它写入.bashrc 在.bashrc的最后写入想要的别名,比如 alias z ...