leetcode 找到字符串中所有字母异位词 java
这个方法是我自己写的,但是没怎么找到类似的方法,而且执行时间有点长
class Solution {public List<Integer> findAnagrams(String s, String p) {List<Integer> res = new ArrayList<>();int right = p.length();for(int left = 0; left<=s.length()-right; left++){String temp = s.substring(left,left+right);if(isAnagrams(temp,p)){res.add(left);} }return res;}private boolean isAnagrams(String s, String t){//超出时间限制// char[] chars1 = s1.toCharArray();// char[] chars2 = s2.toCharArray();// Arrays.sort(chars1);// Arrays.sort(chars2);// if(String.valueOf(chars1).equals(String.valueOf(chars2))){// return true;// }// return false;int[] record = new int[26];for (int i = 0; i < s.length(); i++) {record[s.charAt(i) - 'a']++; // 并不需要记住字符a的ASCII,只要求出一个相对数值就可以了}for (int i = 0; i < t.length(); i++) {record[t.charAt(i) - 'a']--;}for (int count: record) {if (count != 0) { // record数组如果有的元素不为零0,说明字符串s和t 一定是谁多了字符或者谁少了字符。return false;}}return true; }
}