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

【leetcode hot 100 438】找到字符串中所有字母异位词

解法一:排序后循环比较

class Solution {
    public List<Integer> findAnagrams(String s, String p) {
        List<Integer> list = new LinkedList<>();
        char[] chars = p.toCharArray();
        Arrays.sort(chars);
        String p_ = new String(chars);
        for(int i=0; i+p_.length()-1<s.length(); i++){
            String sub = s.substring(i, i+p_.length());
            chars = sub.toCharArray();
            Arrays.sort(chars);
            sub = new String(chars);
            if(sub.equals(p_)){
                list.add(i);
            }
        }
        return list;
    }
}

注意:

  • String p_ = new String(Arrays.sort(p.toCharArray()))不行,Arrays.sort(chars)改变的是chars,不是返回值。
  • s.substring(i,j)提取[i, j)处的字符串。
  • 防止超出范围,条件判断为i+p_.length()-1<s.length()
  • 字符串的判断,不是==,而是sub.equals(p_)
  • String->char数组:char[] chars = s.toCharArray(); char数组->String:s = new String(chars)
  • List->数组:int[] nums = list.toArray(); 数组->List:List list = nums.asList()

相关文章:

  • 无锡网站seo企业整站推广
  • 新能源网站建设铜川网络推广
  • 老山做网站的公司百度运营优化师
  • b2c机票网站建设百度人工客服在线咨询电话
  • 黄岛网站建设公司免费建站免费网站
  • ps做网站ui南宁seo专员
  • Burp Suite Professional 2024版本安装激活指南
  • 鸿蒙HarmonyOS 开发简介
  • 数据库MySQL,在终端输入后,提示不是内部命令等
  • 【Redis】Redis 入门
  • NO.21十六届蓝桥杯备战|一维数组|范围for|memset|memcpy(C++)
  • 数据库复习
  • unity pico开发 三 移动 旋转 传送
  • Python深度学习环境配置(Pytorch、CUDA、cuDNN),包括Anaconda搭配Pycharm的环境搭建以及基础使用教程(保姆级教程,适合小白、深度学习零基础入门)
  • 经验总结:使用vue3测试后端接口的模板
  • 【京准时钟】网络时间同步服务器对数据库的重要性
  • 【JAVA】阿里云百炼平台对接DeepSeek-V3大模型使用详解
  • DOM Node
  • 鸿蒙NEXT开发-Navigation组件导航
  • Python - Python操作Redis
  • JavaWeb后端基础(1)
  • 【Linux】Linux的基本指令(2)
  • 数据库数据恢复—SQL Server附加数据库报错“错误 823”怎么办?
  • PHP面试题--后端部分
  • 浅谈人工智能之Windows安装llama factory
  • vue使用a-table设置自定义合并字段实现某字段值相同则合并行