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:树的重心乱搞 根据样例发现,树的重心可能是答案,所以我们可以先判断一下树的重心可不可 ...
随机推荐
- 用Okhttp框架登录之后的Cookie设置到webView中(转)
1.webview中设置: [java] view plain copy @SuppressWarnings("deprecation") public void synCooki ...
- mycat 9066管理端口 常用命令
1.连接mycat 9066管理端口 命令:mysql -uroot -proot -P9066 -h127.0.0.1 -u:用户名 -p:密码 -P:端口 -h:ip地址例:linux路径切换到m ...
- mysql 备份恢复图
http://blog.csdn.net/oldboy8/article/details/8294631
- confluence的安装、备份和恢复(wiki)
还有一种比较不错的wiki工具MediaWiki 安装教程参考 http://pangge.blog.51cto.com/6013757/1560249 我是按照上面的教程搭建的 还有几篇不错的文章 ...
- 系统间通信(8)——通信管理与RMI 上篇
1.概述 在概述了数据描述格式的基本知识.IO通信模型的基本知识后.我们终于可以进入这个系列博文的重点:系统间通信管理.在这个章节我将通过对RMI的详细介绍,引出一个重要的系统间通信的管理规范RPC, ...
- 【USACO 2.1】Sorting A Three-Valued Sequence
/* TASK: sort3 LANG: C++ URL: http://train.usaco.org/usacoprob2?a=RkPIMxsFWzm&S=sort3 SOLVE: n个数 ...
- yii基础应用目录结构
basic/ 应用根目录 composer.json Composer 配置文件, 描述包信息 config/ 包含应用配置及其它配置 console.php 控制台应用配置信息 web.php We ...
- 做哪些优化,才能让 UITabelView 更顺滑?(转)
原文出处: Alexander Orlov 译文出处:南峰子(@南峰子_老驴) 转载自:ios.jobbole.com/83731/ 我已经在iOS这个最好的移动平台上有几年的开发经验了.在这期间 ...
- SQLite3 学习笔记
1.数据存储方式 Plist(NSArray\NSDictionary) Preference(偏好设置\NSUserDefaults) NSCoding(NSKeyedArchiver\NSkeye ...
- [bzoj4551][Tjoi2016][Heoi2016]树
Description 在2016年,佳媛姐姐刚刚学习了树,非常开心. 现在她想解决这样一个问题:给定一颗有根树(根为1),有以下两种操作: 1. 标记操作:对某个结点打上标记(在最开始,只有结点1有 ...