BestCoder37 1001.Rikka with string 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5202
题目意思:给出一个长度为 n,只有小写字母和 ? 组成的字符串。现在需要向 ? 的位置填小写字母,使得最终得到的字符串是字典序最小且不是回文串。如果怎么填都不符合结果,则输出 "QwQ"。
首先我大体的解决思路是正确的。
先考虑最简单的情况,有可能整个字符串都不含 “?”。那么如果它不是回文串,就符合题目条件,否则输出"QwQ"
然后考虑有 “?” 的情况。我单纯地把除最后一个 ? 的位置以外的所有 ? 都替换成 a,然后最后一个 ? 暴力试探所有小写字母。如果找不到符合条件的就输出"QwQ"。 这种做法忽略了一种情况。如果字符串是这样 ????aaa,就会无解;但是其实是有解的,即应该输出 aabaaaa 。所以正确的做法还需要考虑倒数第二个?的位置!!!
最后一点就是只有一个 ? 的时候,需要特判一下。
(代码有点长,但非常好理解哦~~~~~)手痒痒,又偷偷玩了下
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std; int n;
const int maxn = + ;
char s[maxn]; bool check(char s[])
{
bool flag = true;
for (int i = ; i < n/; i++) {
if (s[i] != s[n-i-]) {
flag = false;
break;
}
}
return flag;
} int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
#endif // ONLINE_JUDGE while (scanf("%d", &n) != EOF) {
scanf("%s", s);
int l = -; // 初始不能为0,因为可能第一个位置是 ?
// 有问号代表可能有解
for (int i = ; i < n; i++) {
if (s[i] == '?') {
l = i; // 找出最右边第一次出现的问号
}
}
// 没有问号的情况
if (l == -) {
printf("%s\n", check(s) ? "QwQ" : s);
}
// 有问号
else {
// 记下倒数第二个 ? 的位置
int pos = -;
// 除了最后的问号,其他问号都填 a
for (int i = ; i < l; i++) {
if (s[i] == '?') {
pos = i;
s[i] = 'a';
}
}
bool flag = false;
for (int i = ; i <= ; i++) {
// 最后的问号填数,使得不是回文串
s[l] = i + 'a';
if (!check(s)) {
printf("%s\n", s);
flag = true;
break;
}
}
// 倒数第二个问号的位置不填 a
if (!flag) {
if (pos == -) // 排除只有一个问号的情况,? 可能在正中间
printf("QwQ\n");
else {
s[l] = 'a';
s[pos] = 'b';
printf("%s\n", check(s)? "QwQ" : s);
}
}
} // end else
}
return ;
}
BestCoder37 1001.Rikka with string 解题报告的更多相关文章
- 【LeetCode】481. Magical String 解题报告(Python)
[LeetCode]481. Magical String 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http:/ ...
- 【LeetCode】833. Find And Replace in String 解题报告(Python)
[LeetCode]833. Find And Replace in String 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu ...
- 【LeetCode】678. Valid Parenthesis String 解题报告(Python)
[LeetCode]678. Valid Parenthesis String 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人 ...
- 【LeetCode】536. Construct Binary Tree from String 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 统计字符串出现的次数 日期 题目地址:https:// ...
- 【LeetCode】1065. Index Pairs of a String 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 遍历 日期 题目地址:https://leetcode ...
- 【LeetCode】345. Reverse Vowels of a String 解题报告(Java & Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 使用栈 双指针 日期 [LeetCode] 题目地址 ...
- 【LeetCode】758. Bold Words in String 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 遍历 日期 题目地址:https://leetcode ...
- 【LeetCode】616. Add Bold Tag in String 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 遍历 日期 题目地址:https://leetcode ...
- 【LeetCode】1119. Remove Vowels from a String 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 判断字符是否是aeiou 日期 题目地址:https: ...
随机推荐
- java常用类 --- Object
Object类 Object类是所有Java类的父类,其位于java.lang包中.任何Java对象,如果没有显示定义父类则它默认Object类作为父类. 方法如下: 其中与线程相关的有5个方法: n ...
- 如何使用UltraCompare对比两个文件夹内容差异
http://jingyan.baidu.com/article/cb5d6105e13599005c2fe0f8.html
- spring缓存Ehcache(入门2)源码解读
Ehcache缓存: 解读: Ehcache缓存是在继承spring缓存核心类CacheManager的基础上实现的. 常用类: EhCacheCacheManager:继承自CacheManager ...
- 微信公众平台回复链接可以直接访问,但不能是锚文字链接<a>标签
最近在学习微信公众平台开发,由于编辑模式和开发模式不可同时开启,在开发模式下如果访客发送关键字过来暂时无法实现关键词自动回复,客服人员先用链接网址直接回复订阅用户,但请注意不能是文字链接,即<a ...
- 【C语言入门教程】1.3 C语言“32个”关键字
关键字是已被C语言标准作为命令.数据类型或者固定函数名的字母组合.关键字不能被用做变量名或函数名.下面列举了C语言的32个关键字,它们遵循C语言的语法使用,形成了C程序设计语言. 序号 关键字 说 ...
- MFC中CString转化为char*
char* convertCStringToChars(CString string) { int nLength=string.GetLength(); ]; memset(c,,nLength+) ...
- linux远程复制和压缩文件的命令
1.linux导出指定数据库表 mysqldump 127.0.0.1 -uname -ppwd databasename tablename>/home/name/tablename. ...
- 外国类似stackoverflow这样的网站访问慢怎么解决-遁地龙卷风
第二版 百度搜索蓝灯 下载桌面版 双击运行 如果打开的浏览器不是你想要的 拷贝地址栏地址给你想要的浏览器 一切就ok了!!!!! 建议不访问国外网站时,便将蓝灯关掉,否则在访问一些不开蓝灯能够正常访问 ...
- jQuery对话框插件 ThickBox
http://baike.haosou.com/doc/7607201-7881296.html 项目已经停止维护,但该插件还是不错的! ThickBox是一个基于JQuery类库的扩展,它能在浏览器 ...
- IoC模式
1.依赖 依赖就是有联系,有地方使用到它就是有依赖它,一个系统不可能完全避免依赖.如果你的一个类或者模块在项目中没有用到它,恭喜你,可以从项目中剔除它或者排除它了,因为没有一个地方会依赖它.下面看一个 ...