毕业设计 建设旅游网站,外贸局,企业网站的域名是该企业的,中山网站建设找丁生《算法通关村——滑动窗口高频问题之寻找子串异位词》
567. 字符串的排列
给你两个字符串 s1 和 s2 #xff0c;写一个函数来判断 s2 是否包含 s1 的排列。如果是#xff0c;返回 true #xff1b;否则#xff0c;返回 false 。
换句话说#xff0c;s1 的排列之一是 s2…《算法通关村——滑动窗口高频问题之寻找子串异位词》
567. 字符串的排列
给你两个字符串 s1 和 s2 写一个函数来判断 s2 是否包含 s1 的排列。如果是返回 true 否则返回 false 。
换句话说s1 的排列之一是 s2 的 子串 。
示例 1
输入s1 ab s2 eidbaooo
输出true
解释s2 包含 s1 的排列之一 (ba).示例 2
输入s1 ab s2 eidboaoo
输出false提示
1 s1.length, s2.length 104s1 和 s2 仅包含小写字母
class Solution {public boolean checkInclusion(String s1, String s2) {int sLen1 s1.length() , sLen2 s2.length();if(sLen1 sLen2){return false;}int[] charArray1 new int[26];int[] charArray2 new int[26];//先读最前面的一段来判断for(int i 0 ; i sLen1 ; i){charArray1[s1.charAt(i) - a];charArray2[s2.charAt(i) - a];}if( Arrays.equals(charArray1,charArray2)){return true;}for(int right sLen1 ; right sLen2 ; right){charArray2[s2.charAt(right) - a];int left right - sLen1;charArray2[s2.charAt(left) - a]--;if(Arrays.equals(charArray1,charArray2)){return true;}}return false;}
}438. 找到字符串中所有字母异位词
给定两个字符串 s 和 p找到 s 中所有 p 的 异位词 的子串返回这些子串的起始索引。不考虑答案输出的顺序。
异位词 指由相同字母重排列形成的字符串包括相同的字符串。
示例 1:
输入: s cbaebabacd, p abc
输出: [0,6]
解释:
起始索引等于 0 的子串是 cba, 它是 abc 的异位词。
起始索引等于 6 的子串是 bac, 它是 abc 的异位词。示例 2:
输入: s abab, p ab
输出: [0,1,2]
解释:
起始索引等于 0 的子串是 ab, 它是 ab 的异位词。
起始索引等于 1 的子串是 ba, 它是 ab 的异位词。
起始索引等于 2 的子串是 ab, 它是 ab 的异位词。提示:
1 s.length, p.length 3 * 104s 和 p 仅包含小写字母
class Solution {public ListInteger findAnagrams(String s, String p) {int sLen s.length(), pLen p.length();if(sLen pLen){return new ArrayListInteger();}ListInteger ans new ArrayList();int[] sCount new int[26];int[] pCount new int[26];for(int i 0;ipLen;i){sCount[s.charAt(i) - a];pCount[p.charAt(i) - a];}if(Arrays.equals(sCount,pCount)){ans.add(0);}for(int left 0 ;left sLen -pLen;left){sCount[s.charAt(left) - a]--;int right left pLen;sCount[s.charAt(right) - a];if(Arrays.equals(sCount,pCount)){ans.add(left1);}}return ans;
}}也可以点击链接我正在「编程导航」和朋友们讨论有趣的话题你⼀起来吧 也可以加我QQ2837468248咨询说明来意