字符串的排列(java实现)
力扣 567. 字符串的排列
题目说明
给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。
换句话说,第一个字符串的排列之一是第二个字符串的子串。
- 输入的字符串只包含小写字母
- 两个字符串的长度都在 [1, 10,000] 之间
示例
例1
1 | 输入: s1 = "ab" s2 = "eidbaooo" |
例2
1 | 输入: s1= "ab" s2 = "eidboaoo" |
笔者理解
此题是一道数组求解算法问题,在力扣题库中被定义为中等题。
解法
当笔者阅读完此题后,发现此题比较直接,用滑动的窗口来存储s2中的一段字符串,然后比较窗口和s1中字母出现次数是否相等即可,
用一个大小26的数组当作字典来存储s1和s2窗口中字母出现的次数。
实现
1 | public boolean checkInclusion(String s1, String s2) { |
时间和空间效率都较高,可见此解法比较适合此题;
总结
本题是今天的每日一题,难度是为中等,感兴趣的朋友都可以去尝试一下,此题还有其他更多的解法,朋友们可以自己逐一尝试。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 徐年の博客!









