T-hiho字符串
来源:互联网 发布:python assert() 编辑:程序博客网 时间:2024/06/11 23:31
如果一个字符串恰好包含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
import java.util.*;public class Main { static Scanner in = new Scanner(System.in); static boolean com(int[] a){ return a['h'-'a']==2&&a['i'-'a']==1&&a['o'-'a']==1; } public static void main(String[] args) { while (in.hasNext()) { String s=in.next(); int min=Integer.MAX_VALUE; int[] cnt=new int[26]; for (int i = 0,j=0; i < s.length(); i++) { while(j<s.length()&&(cnt['h'-'a']<2||cnt['i'-'a']<1||cnt['o'-'a']<1)){ cnt[s.charAt(j)-'a']++;//统计每个字符出现次数长度 j++; }
if(com(cnt)){//如果恰好都出现,统计长度 min=Math.min(min, j-i);//j正好是当前统计字符的下一位,做差正好是长度,不然会是j-i+1 } cnt[s.charAt(i)-'a']--;//从前面开始不断缩小最小的长度,有可能一个字符出现多次 } if(min==Integer.MAX_VALUE) System.out.println(-1); else System.out.println(min); } }}思路
创造一个h、i、o出现次数分别不低于2、1、1的滑动窗口,收敛窗口左边界,记录满足条件窗口的最小宽度。实在不明白自己手写过程即可,这个思路还是十分巧妙的
阅读全文
0 0
- T-hiho字符串
- hiho Coder hiho字符串
- hiho字符串
- hiho coder 字符串处理
- hihocode 1485 hiho字符串
- hiho 1039:字符串消除
- hiho~
- hiho#1052 : 基因工程 字符串+找规律
- hiho一下 第160周 压缩字符串
- hiho一下 第162周 回文字符串
- hiho 1485 尺取法 [Offer收割]编程练习赛11 problem A hiho字符串
- hiho第三周——字符串匹配KMP算法
- Hiho+Trie数求字符串前缀的典型模板
- hiho一下,第164周 题目1 : 有序01字符串
- T-SQL 处理字符串
- javascrip t截取字符串
- T-SQL字符串函数
- AT&T汇编处理字符串
- String.charAt()
- JVM垃圾收集器与内存分配策略
- Java中,&&与&,||与|的区别
- 支付宝APP支付-php后台签名以及验签
- cmake make
- T-hiho字符串
- js滚动条滚动到底部和顶部
- 《TCP IP网络编程》尹圣雨----7.第四章习题
- codeforces 441A Valera and Antique Items
- 堆外内存与NIO
- 图片base64解码,压缩,将图片链接转换为base64(必须http开头)
- 重温面向对象的思想——构造器和重载
- 用cmd命令行编译JAVA程序时出现“找不到或无法加载主类”
- input标签