LeetCode[567]Permutation in String(Java)
来源:互联网 发布:宝信软件同花顺 编辑:程序博客网 时间:2024/06/05 09:18
Description:
Given two strings s1 and s2, write a function to return true if s2 contains the permutation of s1. In other words, one of the first string's permutations is the substring of the second string.
Example 1:
Input:s1 = "ab" s2 = "eidbaooo"Output:TrueExplanation: s2 contains one permutation of s1 ("ba").
Example 2:
Input:s1= "ab" s2 = "eidboaoo"Output: False
Note:
- The input strings only contain lower case letters.
- The length of both given strings is in range [1, 10,000].
Solution:
滑窗法
每次s2中截取和s1等长的字符串,与s1进行比较,利用数组来统计a-z的数量,辅助比较。
每次s2中截取和s1等长的字符串,与s1进行比较,利用数组来统计a-z的数量,辅助比较。
class Solution { public boolean checkInclusion(String s1, String s2) { if(s1.length() > s2.length()){ return false; } int[] chars1 = new int[26]; for(int i = 0; i < s1.length(); i++){ chars1[s1.charAt(i) - 'a'] ++; } for(int i = 0; i <= s2.length() - s1.length(); i++){ String target = s2.substring(i, i+s1.length()); if(helper(chars1, target)){ return true; } } return false; } public boolean helper(int[] chars1, String target){ int[] temp = new int[26]; for(int i = 0; i < chars1.length; i++){ temp[i] = chars1[i]; } for(int i = 0; i < target.length(); i++){ if(temp[target.charAt(i) - 'a'] > 0){ temp[target.charAt(i) - 'a'] --; }else{ return false; } } return true; }}优化
class Solution { public boolean checkInclusion(String s1, String s2) { if(s1.length() > s2.length()){ return false; } int[] count = new int[26]; for(int i = 0; i < s1.length(); i++){ count[s1.charAt(i) - 'a'] ++; count[s2.charAt(i) - 'a'] --; } if(helper(count)){ return true; } for(int i = s1.length(); i < s2.length(); i++){ count[s2.charAt(i) - 'a'] --; count[s2.charAt(i - s1.length()) - 'a'] ++; if(helper(count)){ return true; } } return false; } public boolean helper(int[] count){ for(int num : count){ if(num != 0){ return false; } } return true; }}
阅读全文
0 0
- LeetCode[567]Permutation in String(Java)
- LeetCode #567 Permutation in String
- [leetcode]567. Permutation in String
- [leetcode] 567. Permutation in String
- 【LeetCode】567. Permutation in String
- [LeetCode] 567. Permutation in String
- Leetcode 567. Permutation in String
- 567Permutation in String
- Leetcode之Permutation in String 问题
- leetcode 567. Permutation in String 滑动窗口
- [Leetcode] 567. Permutation in String 解题报告
- Permutation in String
- 567. Permutation in String
- Permutation in String
- LeetCode567. Permutation in String
- 567. Permutation in String
- 567. Permutation in String
- 567. Permutation in String
- 非阻塞模式(ioctlsocket)
- PhantomJS快速入门
- IOCP模型与网络编
- 【bzoj2064】【分裂】状态压缩表示合并子集
- Windows Socket 编程_单个服务器对多个客户端简单通讯
- LeetCode[567]Permutation in String(Java)
- I2S音频总线学习(一)数字音频技术
- bzoj 2748 音量调节 DP 解题报告
- 数据降维---LLE(Locally Linear Embedding)---局部线性嵌入(1)
- javascript实现垂直导航在可视区范围显示
- 完成1500万元Pre-A轮融资 火绒为何牵手天融信?
- Excel2013打印时怎么固定表头及表尾让打印后的每页都可以看得到
- Struts.xml的参数传递
- MyBatis 延迟加载,一级缓存,二级缓存设置