面试算法-142-找到字符串中所有字母异位词

题目

给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。

异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。

示例 1:

输入: s = “cbaebabacd”, p = “abc”
输出: [0,6]
解释:
起始索引等于 0 的子串是 “cba”, 它是 “abc” 的异位词。
起始索引等于 6 的子串是 “bac”, 它是 “abc” 的异位词。

class Solution {
    public List<Integer> findAnagrams(String s, String p) {
        List<Integer> result = new ArrayList<>();
        if(s.length() < p.length()){
            return result;
        }
        
        int n = p.length();
        int[] letter = new int[26];
        for (int i = 0; i < n; i++) {
            char sCh = s.charAt(i);
            char pCh = p.charAt(i);
            letter[sCh - 'a']--;
            letter[pCh - 'a']++;
        }
        
        int i = n;
        for (; i < s.length(); i++) {
            if (allZero(letter)) {
                result.add(i - n);
            }
            char rightCh = s.charAt(i);
            char leftCh = s.charAt(i - n);
            letter[rightCh - 'a']--;
            letter[leftCh - 'a']++;
        }
        if (allZero(letter)) {
            result.add(i - n);
        }
        return result;
    }

    public boolean allZero(int[] letter) {
        int n = letter.length;
        for (int i = 0; i < n; i++) {
            if (letter[i] != 0) {
                return false;
            }
        }
        return true;
    }
}

相关推荐

  1. 面试算法-142-找到字符串所有字母

    2024-04-06 04:12:03       36 阅读
  2. 找到字符串所有字母(LeetCode 438)

    2024-04-06 04:12:03       52 阅读
  3. LeetCode 438.找到字符串所有字母

    2024-04-06 04:12:03       39 阅读
  4. Leetcode 438. 找到字符串所有字母

    2024-04-06 04:12:03       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-06 04:12:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-06 04:12:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-06 04:12:03       82 阅读
  4. Python语言-面向对象

    2024-04-06 04:12:03       91 阅读

热门阅读

  1. TS学习02 面向对象 类、封装继承、接口、泛型

    2024-04-06 04:12:03       32 阅读
  2. 小组分享内容二:Jsoup部分(未完待续)

    2024-04-06 04:12:03       34 阅读
  3. MYSQL-----多表查询详解,配有练习讲解

    2024-04-06 04:12:03       37 阅读
  4. Django --静态文件

    2024-04-06 04:12:03       32 阅读
  5. ubunu18.04源码安装opencv 4.8.0

    2024-04-06 04:12:03       38 阅读
  6. cache与主存之间的相联

    2024-04-06 04:12:03       32 阅读