Match the string--hdu1797(模拟)
2024-09-08 12:59:04
http://acm.hdu.edu.cn/showproblem.php?pid=1797
就是模拟
我的思路是标记aba 和h的位置
然后就判断是否正确 就行了
还有就是 最后 fkfkfkfk交叉也可以
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cstdio>
#include <cstdlib>
#include <cctype>
#include <math.h>
#include <ctype.h> using namespace std;
#define memset(a,b) memset(a,b,sizeof(a))
#define N 101000
typedef long long ll;
char str[N]; int main()
{
int T; scanf("%d",&T);
while(T--)
{
int flag=;
scanf("%s",str);
int len=strlen(str);
int abc,h;
abc=h=-;
if(strstr(str,"aba"))
abc=strstr(str,"aba")-str;
if(strstr(str,"h"))
h=strstr(str,"h")-str;
if(abc==- || h==- || h==len-)
flag=;
for(int i=; i<abc; i++)
{
if(str[i]!='a')
{
flag=;
break;
}
}
int v1=,v2=;
for(int i=abc+; i<h; i++)
{
if(str[i]!='b' && str[i]!='d')
{
flag=;
break;
}
if(str[i]=='d' && str[i]=='b')
{
flag=;
break;
}
if(str[i]=='b')
v1++;
if(str[i]=='d')
v2++;
}
if(v1!= && v2==)
flag=;
if(v1>)
flag=;
v1=v2=;
for(int i=h+; str[i]; i++)
{
if(str[i]!='f' && str[i]!='k')
{
flag=;
break;
}
if(str[i]=='f')
v1++;
if(str[i]=='k')
v2++;
}
if(v1== && v2==)
flag=;
if(v1== && v2== && v1!=v2)
flag=;
if(flag==)
printf("NO\n");
else
printf("YES\n");
}
return ;
}
最新文章
- 集成基于CAS协议的单点登陆
- Java--Semaphore控制并发线程数量
- swiper的使用
- Opencv读取视频
- Android中style的使用
- linux删除、读取文件原理
- jquery中eq和get的区别与使用方法
- thinkphp 内置函数详解
- Nodejs之package.json介绍说明
- 014 在Spark中完成PV与UV的计算,重在源代码
- 【java】函数概述
- 移动平台的meta标签
- openssl windows平台编译库
- Spark Standalone与Spark on YARN的几种提交方式
- delphi 线程的使用
- SQL-主键与外键
- JS Map对象
- a positive definite matrix
- HihoCoder1670 : 比赛日程安排([Offer收割]编程练习赛41)(模拟)
- HUST-1407 郁闷的小J