串(string)
题目描述
给定一个由小写字母组成的字符串s,每次你可以删去它的一个非回文子串,
求删成空串的最小次数。
输入输出格式
输入格式:
第一行一个整数 t 表示数据组数。
每组数据第一行一个整数 n表示字符串长度,第二行一个字符串 s
输出格式:
每组数据输出一行一个整数表示答案,如果无法删成空串输出-1
注意:这个题是个坑!是个坑!是个大坑!谁不会去想DP啊,他居然会只特判就能做出来!!!
根据我们精密的数学分析就会发现这个题只会输出 -1, 1 , 2 ,这三个数字(无语==)
特判: 1. -1的情况:ababa || aaaaa || aabaa 没错,就这三种了;
2. 1的情况:不是回文串呗 ==
3. 剩下的都输出2吧!
复杂度 O(n)
#include<cstdio>
#include<cstring>
using namespace std;
char s[];
int main(){
int t,n;
scanf("%d",&t);
while(t--){
memset(s,,sizeof(s));
scanf("%d%s",&n,s);
int num=,i=,j=n-,f=,k=,m=;
for(int i=;i<n;i++) if(s[i]==s[i+]) num++;
for(int i=;i<n;i+=) if(s[i]==s[i+]) k++;
for(int i=;i<n;i+=) if(s[i]==s[i+]) m++;
if(k==(n+)/-&&m==n/-&&n%==){//判断ababa(必须得是奇数个)
printf("-1\n");
continue;
}
while(i<=j){
if(i==j&&s[i]!=s[i-]&&num==n-||n==num+){//判断aaaaa||aabaa类型
printf("-1\n"),f=;
break;
}
if(s[i]!=s[j]&&i!=j){//不是回文串
printf("1\n"),f=;
break;
}
i++,j--;
}
if(!f) printf("2\n");//最后就是剩下的了
}
return ;
}
串(string)的更多相关文章
- 串string (KMP)
1.Definition 串string,是零个或多个字符组成的有限序列.一般记作S="a1a2a3...an",其中S是串名,双引号括起来的字符序列是串值:ai(1<= i ...
- YZOI Easy Round 2_回文串 string
原文链接:http://laphets1.gotoip3.com/?id=18 Description 给出一个由小写字母组成的字符串,其中一些字母被染黑了,用?表示.已知原来的串不是 一个回文串,现 ...
- 串String(1):串的实现(定长顺序存储结构)
前言 PS:本文相关头文件.预编译以及typedef如下,阅读一遍以便于下面的理解: #include <stdio.h> #include <stdlib.h> #inclu ...
- Swift新手教程3-字符串String
原创blog,转载请注明出处 String 在swfit中,String兼容Unicode的方式.用法和C语言类似. 注意 在Cocoa和Cocoa touch中,Swift的String,和Fo ...
- 判断一字串String中是否包含某一串字符串
String ostype = data.getString("osType").toUpperCase(); //转换为大写 if (ostype.contains(" ...
- 串String(2):串的实现(堆分配存储表示法)
7/27/2017,先占个位,最近事情比较忙,明天敲一波代码,预测在一星期内搞定 9/02/2017,看到这个十分汗颜,八月去美帝学习了,没有抽空补上这一博文,计划这个月开了数据结构课后补上
- Day08 - Ruby比一比:String的+=与concat串接
前情提要: 在第七天我们透过比较Symbol和String,发现字串比符号多了更多方法!为了活用string method,今天我们接续前文,来探讨一题跟字串有关的题目: Ruby经典面试题目#08( ...
- Day07 - Ruby比一比:Symbol符号与String字串
前情提要: 第六天我们透过Ruby代码练习public,protected和privatemethod时,发现冒号在前面的参数,:mydraft,:myspace,这些就是符号Symbol.在今天,我 ...
- string与int互换
1:将string转化为int 1.) int i = Integer.parseInt(String s); 2.) int i = Integer.valueOf(my_str).intValue ...
- JAVA中int、String的类型转换
int -> String int i=12345;String s="";第一种方法:s=i+"";第二种方法:s=String.valueOf(i); ...
随机推荐
- 提升团队幸福感之:集成 GitLab && JIRA 实现自动化工作流
佛罗伦萨 - 圣母百花圣殿(图) 前言 GitLab 和 Jira 是平时开发过程中使用非常高频的代码管理系统(开发人员)和项目管理系统(项目管理),通过两套系统的协作完成平常大多数的功能开发,但是两 ...
- 【算法•日更•第五十期】二分图(km算法)
▎前言 戳开这个链接看看,惊不惊喜,意不意外?传送门. 没想到我的博客竟然被别人据为己有了,还没办法投诉. 这年头写个博客太难了~~~ 之前小编写过了二分图的一些基础知识和匈牙利算法,今天来讲一讲km ...
- JDK1.8源码学习-ArrayList
JDK1.8源码学习-ArrayList 目录 一.ArrayList简介 为了弥补普通数组无法自动扩容的不足,Java提供了集合类,其中ArrayList对数组进行了封装,使其可以自动的扩容或缩小长 ...
- C#实践设计模式原则SOLID
理论跟实践的关系,说远不远,说近不近.能不能把理论用到实践上,还真不好说. 通常讲到设计模式,一个最通用的原则是SOLID: S - Single Responsibility Principle ...
- PythonCrashCourse 第十章习题
在文本编辑器中新建一个文件,写几句话来总结一下你至此学到的Python知识,其中每一行都以"In Python you can"打头.将这个文件命名为 learning_pytho ...
- C# 中生成随机数
生成1-100之间的随机数: new Random().Next(1, 100) 但是输出的结果是一样的,因为Random调用无参的构造函数其实调用的是 有参的构造函数,传递的 默认值: Enviro ...
- JUC----04
目录 1.1 读写问题 1.1 读写问题 ReadWriteLockUnsafeDemo: public class ReadWriteLockUnsafeDemo { // TODO: 2020/7 ...
- WordCloud教程(上)
先贴代码: import wordcloud,jieba with open('datas/1.txt') as rt:#,encoding='utf-8' comment_text=rt.read( ...
- 阿里大牛教你基于Python的 Selenium自动化测试示例解析
今天给大家讲解的是自动化测试示例的解析,如有不对的地方请多多指教. 自动化测试示例如下: from selenium import webdriver from selenium.webdriver. ...
- 基于laravel的有偿开源流程引擎
系统主要文档已经编写完成,具体请前往查看[系统文档](https://www.kancloud.cn/lijianlin/jishullin_workflow_engine/1894424 " ...