[ACdream]女神教你字符串——违和感
题目描述:
女神最喜欢字符串了,字符串神马的最有爱了。
女神是一个重度强迫症患者,面对不是对称的东西,她会觉得太违和了,就会爆炸。所以她手上的字符串都是回文的,像什么a,b,aabaa,abcba,上海自来水来自海上...等等。
女神的人生理想就是把所有字符串都改造成回文串!这是非常宏伟的理想。
一切理想都从最简单的开始。
好了,现在女神面前有一堆字符串,然后请问能否通过删去一个字符,使这个字符串变成回文串?
Input
多组数据,每组数据是一个字符串S,仅有英文小写字母组成
1<=|S|<=100000
Output
Sample Input
aaab
baa
aaa
Sample Output
3
0
-1 解题思路:
这题折腾我好久,个人因为一些特殊的情况漏掉了,导致提交一直错误,我的做法步骤是,1、判断不删除字符是不是符合,2、去掉第一个字符是不是符合,3、去掉最后一个字符是不是符合,4、用一个i、j标记首位的下标,找到不相等的位置,开始判断,如果i的位置等于len/2,需要删除的字符位置就是i,如果不是就要分4种情况来判断了,第一种就是s[i+1]==s[j]&&s[i]==s[j-1],第二种s[i+1]!=s[j]&&s[i]==s[j-1],第三种s[i+1]==s[j]&&s[i]!=s[j-1]第四种s[i+1]!=s[j]&&s[i]!=s[j-1],用if来解决。 AC代码:
#include<iostream>
#include<string>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
int flag,sum;
char s[]; int judge1(int si,int sj,int m)
{
int i,j;
for(i=si,j=sj; i<m; i++,j--)
{
if(s[i]!=s[j]) return ;
}
return ;
}
int main()
{
int len,i,j,m;
while(scanf("%s",s)!=EOF)
{
sum=;
len=strlen(s);
m=len/;
if(judge1(,len-,m))
{
printf("-1\n");continue;
}
if(len%==)
{
if(judge1(,len-,m+))
{
printf("0\n");continue;
}
if(judge1(,len-,m-))
{
printf("%d\n",len-);continue;
}
}
if(len%==)
{
if(judge1(,len-,m))
{
printf("0\n");continue;
}
if(judge1(,len-,m))
{
printf("%d\n",len-);continue;
}
} for(i=,j=len-; i<m; i++,j--)
{
if(s[i]!=s[j])
{
if(i!=m)
{
if(s[i+]==s[j]&&s[i]!=s[j-])
{
if(len%==) m++;
if(judge1(i+,j,m)==)
{
sum=;
flag=i;
}
}
else if(s[i+]!=s[j]&&s[i]==s[j-])
{
if(!judge1(i,j-,m)) break;
else
{
sum=;
flag=j;
}
}
else if(s[i+]==s[j]&&s[i]==s[j-])
{
int mm=m,mm2=m;
if(len%==) mm++;
if(!judge1(i+,j,mm))
{
if(!judge1(i,j-,mm2)) break;
else
{
sum=;
flag=j;
}
}
else
{
sum++;flag=i;
}
}
}
else
{
sum=;
flag=i;
}
break;
} }
if(sum==) printf("%d\n",flag);
else printf("-1\n");
}
return ;
}
[ACdream]女神教你字符串——违和感的更多相关文章
- [ACdream] 女神教你字符串——三个气球
Problem Description 女神邀请众ACdream开联欢会,显然作为ACM的佼佼者,气球是不能少的~.女神准备了三种颜色的气球,红色,黄色,绿色(交通信号灯?) 有气球还不能满足女神,女 ...
- [ACdream]女神教你字符串——导字符串
Problem Description 正如大家知道的,女神喜欢字符串,而在字符串中,女神最喜欢回文字符串,但是不是所有的字符串都是回文字符串,但是有一些字符串可以进行“求导”来变成回文字符串. 字符 ...
- [UWP小白日记-10]程序启动屏(ios解锁既视感)
讲一下 微软爸爸的开发者大会2016又暴了个表达式动画和Windows.UI.Composition的API,好叼的样子. 官方示例库GitHub 目前是懵逼状态,好复杂.脑细胞已经在地府排队了. ( ...
- PHP、Java、Python、C、C++ 这几种编程语言都各有什么特点或优点
PHP.Java.Python.C.C++ 这几种编程语言都各有什么特点或优点 汇编: C: Java: C#: PHP: Python: Go: Haskell: Lisp: C++: &l ...
- [bilibili]弹幕屏蔽列表
<filters> <item enabled="true">t=定单身</item> <item enabled="true& ...
- CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维
前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括 ...
- swift开源项目精选
Swift 开源项目精选-v1.0 2016-03-07 22:11 542人阅读 评论(0) 收藏 举报 分类: iOS(55) Swift(4) 目录(?)[+] 转自 http: ...
- 01_Java语言基础部分(数据类型与表达式、流程控制语句、数组与方法)
1. Java语言主要由5中符号组成 标识符:数字.字母.美元符.下划线(注意不能数字开头) 关键字(被Java赋予特殊意义的单词,注意所有关键字都是小写): goto和const保留了它们,但是 ...
- ZJOI Day 2 游记
---恢复内容开始--- 去ZJOI Day 2打了一会酱油...各种神犇大爷都来屠,南外的小朋友也来屠我们了真是感动...没有看到毛爷爷真是可惜.. Day[-1] 早上还在上课,吃完中饭立马跑去找 ...
随机推荐
- 201521123079《java程序设计》第11周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) ...
- ThreadLocal原理及使用示例
简介:本文已一个简要的代码示例介绍ThreadLocal类的基本使用方式,在此基础上结合图片阐述它的内部工作原理. 欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblog ...
- SQL Server安装【转载】
http://blog.csdn.net/sangjinchao/article/details/62044021?locationNum=6&fps=1
- 详解go语言的array和slice 【二】
上一篇已经讲解过,array和slice的一些基本用法,使用array和slice时需要注意的地方,特别是slice需要注意的地方比较多.上一篇的最后讲解到创建新的slice时使用第三个索引来限制sl ...
- 作为一个新人,怎样学习嵌入式Linux
作为一个新人,怎样学习嵌入式Linux?被问过太多次,特写这篇文章来回答一下. 在学习嵌入式Linux之前,肯定要有C语言基础.汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会). C语言要学 ...
- 从输入 URL 到页面加载完成的过程中都发生了什么
从输入 URL 到页面加载完成的过程中都发生了什么 过程描述 浏览器查找域名对应的 IP 地址: 浏览器根据 IP 地址与服务器建立 socket 连接: 浏览器与服务器通信: 浏览器请求,服务器处理 ...
- SpringAop详解
近几天学习了一下SpringAop在网上找了一些资料,此链接为原文链接http://www.cnblogs.com/xrq730/p/4919025.html AOP AOP(Aspect Orien ...
- 用css绘制各种图形
1.用css绘制三角形 http://www.cnblogs.com/blosaa/p/3823695.html
- Mybatis #{ } 和 ${ } 区别
动态 SQL 是 Mybatis 的强大特性之一,也是它优于其他 ORM 框架的一个重要原因.Mybatis 在对 sql 语句进行预编译之前,会对 sql 进行动态解析,解析为一个 BoundSql ...
- Charles Proxy v4.1.4 免费注册激活方法
去官网下载最新版Charles,目前是v4.1.4 下载后安装Charles,然后先打开一次Charles软件(Mac系统需要先打开一次,Windows不需要) 到网站 http://charles. ...