串(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); ...
随机推荐
- eclipse中点击pre-commit Request to ReviewBoard,预提交框不显示问题
需要设置:
- Pycharm 2020.01亲测激活到2089年
Pycharm 2020.01亲测激活到2089年,注意是2020.01版本. 下载jetbrains-agent.jar 链接: https://pan.baidu.com/s/1w1i15pT38 ...
- JavaScript 用七种方式教你判断一个变量是否为数组类型
JavaScript 如何判断一个变量是否为数组类型 引言 正文 方法一 方法二 方法三 方法四 方法五 方法六 方法七 结束语 引言 我们如何判断一个变量是否为数组类型呢? 今天来给大家介绍七种方式 ...
- ganglia访问时出现"You don't have permission to access /ganglia/ on this server"
安装ganglia后,访问浏览器出现"You don't have permission to access /ganglia/ on this server" 按照网络上的要求配 ...
- centos7下的redis集群模式
1.先安装好单机版的redis 2.Reids安装包里有个集群工具,要复制到/usr/local/bin里去 cd /home/redis/redis-4.0./src ls - cp redis-t ...
- 【Net】StreamWriter.Write 的一点注意事项
背景 今天在维护一个旧项目的时候,看到一个方法把string 转换为 byte[] 用的是写入内存流的,然后ToArray(),因为平常都是用System.Text.Encoding.UTF8.Get ...
- rbac表 ( 5张 )
/* Navicat Premium Data Transfer Source Server : 本地连接 Source Server Type : MySQL Source Server Versi ...
- py_递归实例:汉诺塔问题
递归的两个特点 调用自身 结束条件 # _*_coding:utf-8 ''' 递归实例:汉诺塔问题 n----盘子总数 a----第一个柱子 b----第二个柱子 c----第三个柱子 n个盘子时: ...
- 多商铺平台手机电脑自适应宣传展示平台店铺javassh项目代码线上
部署运行:eclipse 建议使用jdk 1.8 + ,Tomcat 8.0 + 系统介绍: 1.网站后台采用主流的 SSH框架 jsp JSTL,网站前台采用Angular jS框架 2.网站前端采 ...
- 蒲公英 · JELLY技术周刊 Vol.20: Vue3 极致优化——分析 Vue3 Compiler 告诉你为什么这么快
蒲公英 · JELLY技术周刊 Vol.20 性能优化是一条无尽的路,我们总是可以找到各种途径去提升体验,不论是响应时间还是按需加载,亦或是根据框架或者组件有针对性的优化都会是不错的方法.如果你在使用 ...