hihocoder-Week243-hiho字符串
hihocoder-Week243-hiho字符串
题目1 : hiho字符串
描述
如果一个字符串恰好包含2个'h'、1个'i'和1个'o',我们就称这个字符串是hiho字符串。
例如"oihateher"、"hugeinputhugeoutput"都是hiho字符串。
现在给定一个只包含小写字母的字符串S,小Hi想知道S的所有子串中,最短的hiho字符串是哪个。
输入
字符串S
对于80%的数据,S的长度不超过1000
对于100%的数据,S的长度不超过100000
输出
找到S的所有子串中,最短的hiho字符串是哪个,输出该子串的长度。如果S的子串中没有hiho字符串,输出-1。
- 样例输入
-
happyhahaiohell
- 样例输出
-
5
题解:
双指针滑动窗口,前后两个指针,如果缺少元素,则前指针前进,如果元素充足,则后指针前进,推进减少窗口。
#include <cstdlib>
#include <cstdio>
#include <cstring>
const int MAXN = 100000 + 10;char ch[MAXN];
int len, start_id, end_id, ans;
int h_num, i_num, o_num; bool check_validation()
{return (h_num >= 2 && i_num >= 1 && o_num >= 1);
}bool check_ok()
{return (h_num == 2 && i_num == 1 && o_num == 1);
}void add_item(int idx)
{if(ch[idx] == 'h'){h_num += 1; }else if(ch[idx] == 'i'){i_num += 1; }else if(ch[idx] == 'o'){o_num += 1; }
}void subtract_item(int idx)
{if(ch[idx] == 'h'){h_num -= 1; }else if(ch[idx] == 'i'){i_num -= 1; }else if(ch[idx] == 'o'){o_num -= 1;}
}int main(){ scanf("%s", ch); len = strlen(ch); start_id = 0; end_id = 0; h_num = i_num = o_num = 0;ans = len + 1; add_item(start_id); ++start_id; while(end_id < start_id){if(check_validation() || start_id >= len){if(check_ok()){ans = (ans < (start_id - end_id))?(ans):(start_id - end_id); }subtract_item(end_id);++end_id; }else{add_item(start_id);++start_id; }}if(ans > len){ans = -1; }printf("%d\n", ans); return 0;
}
转载于:https://www.cnblogs.com/zhang-yd/p/10460946.html
hihocoder-Week243-hiho字符串相关推荐
- hiho #1485 : hiho字符串(滑动窗口)
#1485 : hiho字符串 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 如果一个字符串恰好包含2个'h'.1个'i'和1个'o',我们就称这个字符串是hiho字符 ...
- hihocoder 1320 压缩字符串(字符串+dp)
题解: 其实就是对应三种dp的转移方式 1.拼接类型 dp[i][j] = dp[i][c] + dp[c][j] 2.不变类型 dp[i][j] = j-i+1 3.重复类型(必须满足有k个循环节) ...
- hihoCoder 1095 HIHO Drinking Game 微软苏州校招笔试 12月27日
由game规则可以看出,T越大超出d的可能性越大,对小ho越有利,其实我是通过打表才看出来这个单调性的==. 对T进行二分搜索,[0,K+1],因为如果N=1,那么应该有T=K+1,小ho才可以获胜. ...
- hiho一下 第三周---KMP算法
KMP算法 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上 ...
- 《数字图像处理》主编:曹茂永
数字图像处理知识点 目录 数字图像处理知识点 第一章 概述 1.1数字图像处理相关概念 1.2数字图像处理系统流程图: 1.3 数字图像处理主要研究内容 第二章 数字图像处理基础 2.1图像的数字化及 ...
- 【Code】OJ推荐
OJ 1.Virtual Judge 2.POJ(PKUOJ) 3.ZOJ 4.LA(UVALive) 5.HDU(HDOJ) 6.CodeForces(CF) 7.TopCoder 8.LibreO ...
- 一个简易的OJ导航界面
一个简易的html文件 加了一张动图,做了简单的排版.把自己 最喜欢的诗句 和 日常用到的 OJ链接 放在了里面. Chrome设置--启动时打开特定网页: 把这个h5文件的路径添加到其中, 可以实现 ...
- 数据结构pintia_数据结构和算法(一)概述
数据结构,用来描述数据间的关系 算法,指解决某一特定问题的步骤 数据结构为算法服务,算法是特定问题下的解决办法,故没有通用性算法,应具体问题具体分析 一.数据结构 以上为数据结构的逻辑结构,在计算机内 ...
- hiho一下 第四周 Hihocoder #1036 : Trie图
#1036 : Trie图 时间限制:20000ms 单点时限:1000ms 内存限制:512MB 描述 前情回顾 上回说到,小Hi和小Ho接受到了河蟹先生伟大而光荣的任务:河蟹先生将要给与他们一篇从 ...
最新文章
- php中mvc控制器作用,理解PHP中的MVC编程之控制器
- cookie之登录用户凭证
- HDU 5787 wolf Number 数位dp
- VUE中父子组件传参(简单明了)
- matlab makesurf,matlab制作GIF之hello world
- 2017linux版本号,Linux基本命令 2017-11-27
- webRTC之Mesh/MCU/SFU通信架构区别(九)
- 分享过滤条件中增加一个自定义过滤变量插件代码
- andorid自定义ViewPager之——子ViewPager滑到边缘后直接滑动父ViewPager
- 未定义数组索引:_数据结构-数组
- Windows Workflow RC HOL学习笔记(四):使用Listen,Delay和event-based自定义Activities
- 深度学习与自然语言处理 | 斯坦福CS224n · 课程带学与全套笔记解读(NLP通关指南·完结)
- 学习Linux的第七十一天
- 远程桌面连接设置详细步骤
- Iphone连接Openwrt的IPSEC服务器
- (5)多体量子态与统计力学基础
- 基于uFUN开发板和扩展板的联网校准时钟
- 史记十表-卷十六-秦楚之际月表第四
- python语言入门全集-Python语言入门(一)
- 数据库DB与数据仓库DW区别和联系
热门文章
- JavaScript 里变量名前面加了大括号代表什么含义
- 来自Yang Terry的关于SAP CRM One Order事件回调机制的分享
- 主数据SAP Cloud for Customer产品主数据上维护的附件建模介绍
- CRM和C4C product category hierarchy的可编辑性控制逻辑
- 如何从ERP下载Sales BOM到CRM
- 道路交通安全违法行为图像取证技术规范_海康移动取证方案中的设备介绍
- java机试 数据结构_来看看阿里面试的一面都面了些什么笔试+机试(java岗)
- springmvc dao怎么可以不写实现类_SpringMVC(一)细聊ContextLoaderListener 是怎么被加载的...
- 安川g7变频器说明书_安川机器人故障维修合集
- python google buffer_python调用Google Protocol Buffer