栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

LeetCode438.找到字符串中所有字母异位词——java

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode438.找到字符串中所有字母异位词——java

题目描述:

给定两个字符串 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”
的异位词。

第一个方法:滑动窗口
建立数组记录p字符出现的次数,一个数组记录s字符以p字符长度为单位的字符出现的次数。
窗口移动的规律:
窗口初始化状态:

随后窗口的移动状态:

此时bc的字符在数组已经记录了,故删首增尾进能实现窗口的移动。

class Solution {
    public List findAnagrams(String s, String p) {
        if(s.length()();
        }
          List ans=new ArrayList();
          int [] pcount=new int [26];
          int [] scount=new int[26];
        
            for(int i=0;i 

第二个方法:暴力法

class Solution {
    public List findAnagrams(String s, String p) {
        if(s.length()();
        }
        List ans=new ArrayList();
        char [] pch=p.toCharArray();
        Arrays.sort(pch);
        for(int i=0;i<=s.length()-p.length();i++)
        {
            char [] sch=s.substring(i,i+p.length()).toCharArray();
            Arrays.sort(sch);
            if(String.valueOf(sch).equals(String.valueOf(pch)))
            {
                ans.add(i);
            }
        }
        return ans;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/820898.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号