当前位置: 首页 > article >正文

leetcode438. 找到字符串中所有字母异位词

题目描述:

给定两个字符串 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 * 104
  • s 和 p 仅包含小写字母

上代码,拿去即可运行:

public class Anagram {
    public static void main(String[] args) {
        String s = "abab";
        System.out.println(getAnagram(s,"ab"));
    }

    public static List<Integer> getAnagram(String source, String anagram) {
        List<Integer> integerList = new ArrayList<>();
        String[] strings = source.split("");

        List<String> stringList = Arrays.asList(anagram.split(""));
        Map<String, Long> resultMap = stringList.stream().collect(Collectors.groupingBy(s -> s, Collectors.counting()));
        for (int i = 0; i <= (strings.length - anagram.length()); i++) {
            Map<String, Long> longMap = new HashMap<>();
            for (int j = i; j < (i + anagram.length()); j++) {
                if (!Objects.isNull(longMap.get(strings[j]))) {
                    longMap.put(strings[j], longMap.get(strings[j]) + 1);
                } else {
                    longMap.put(strings[j], 1L);
                }
            }
            if (resultMap.equals(longMap)) {
                integerList.add(i);
            }

        }
        return integerList;
    }
}

运行结果:


慢慢来才是最快的方法--天涯明月    共勉

我要刷300道算法题,第129道 。 希望自己可以坚持下去  。

 


http://www.kler.cn/news/368122.html

相关文章:

  • Python图像处理——基于ResNet152的人脸识别签到系统(Pytorch框架)
  • 【JavaEE】【多线程】volatile,wait/notify
  • CentOS6升级OpenSSH9.2和OpenSSL3
  • python对文件的读写操作
  • Python 自动化运维:Python基础知识
  • 数据结构与算法-21算法专项(中文分词)(END)
  • 【面试经典150】day 6
  • Kubernetes实战——DevOps集成SpringBoot项目
  • RSocket vs WebSocket:Spring Boot 3.3 中的两大实时通信利器
  • Crawler4j在多线程网页抓取中的应用
  • C++的相关习题(2)
  • 算法-二叉树的最大路径和
  • 架构师备考-数据库设计、实施和维护
  • 基于协同过滤算法的旅游网站推荐系统
  • 【ECMAScript标准】深入解读ES6新特性及其应用
  • 总分441数一149专137东南大学820信号数电考研经验电子信息与通信工程电路原920专业基础综合,真题,大纲,参考书。
  • 【JavaEE】【多线程】阻塞队列
  • 零基础Java第十一期:类和对象(二)
  • 学习前端HTML
  • 如何保护服务器的系统日志
  • CCRC-DSA数据安全评估师: 2024中国5G+工业互联网大会将于武汉举办
  • Ansible 的脚本 --- playbooks剧本
  • 【Java小白图文教程】-06-二维数组
  • SpringBoot request.getContextPath()获取到http 而不是https的问题解决
  • android aild 传递多个参数, in ,out,inout
  • php8.3.0安装及扩展安装