2022-02-19(438. 找到字符串中所有字母异位词)

2024-04-07 23:38

本文主要是介绍2022-02-19(438. 找到字符串中所有字母异位词),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

方法1 简单模拟:sMap存储每种情况

思路就很直观,有的喜欢叫滑动窗口,我还是把这个归为简单模拟吧

class Solution {Map<Character,Integer> sMap;Map<Character,Integer> pMap;public List<Integer> findAnagrams(String s, String p) {sMap =new HashMap<>();pMap =new HashMap<>();int sLength=s.length();int pLength=p.length();List<Integer> result=new ArrayList<>();if(pLength>sLength){return result;}//将p的所有字符放入pMapfor(int i=0;i<pLength;++i){char c=p.charAt(i);pMap.put(c,pMap.getOrDefault(c,0)+1);}//将s的前pLength个字符放入sMapfor(int i=0;i<pLength;++i){char c=s.charAt(i);sMap.put(c,sMap.getOrDefault(c,0)+1);}if(same()){result.add(0);}for(int i=1;i<=sLength-pLength;++i){    sMap.put(s.charAt(i-1),sMap.get(s.charAt(i-1))-1);sMap.put(s.charAt(i+pLength-1), sMap.getOrDefault(s.charAt(i+pLength-1),0)+1 );if(same()){result.add(i);}}return result;}//比较sMap和pMap是否相同public boolean same(){for(Map.Entry<Character,Integer> oneMap:sMap.entrySet()){if(pMap.getOrDefault(oneMap.getKey(),0)!=oneMap.getValue()){return false;}}return true;}
}

1 第59个用例没过,写的是解答错误,但我实在是不知道是为啥。
在这里插入图片描述
后来看了解答在same函数那里给两个值加了.intValue()才过了。而且给任意一个值加一个.intValue()就可以。但两个都不加就不行。

    //比较sMap和pMap是否相同public boolean same(){for(Map.Entry<Character,Integer> oneMap:sMap.entrySet()){//给任意一个值加一个.intValue()就可以,没必要像我一样加两个if(pMap.getOrDefault(oneMap.getKey(),0).intValue()!=oneMap.getValue().intValue()){return false;}}return true;}

后来我想到了Integer类型不能用==或者!=进行比较呀!!!

里面有缓存的机制,所以之前58个用例的值碰巧在-128~127范围内才通过了,而这个值超过了127所以必须用equals()!!!改了后果断通过

    public boolean same(){for(Map.Entry<Character,Integer> oneMap:sMap.entrySet()){if(!pMap.getOrDefault(oneMap.getKey(),0).equals(oneMap.getValue())){return false;}}return true;}

这篇关于2022-02-19(438. 找到字符串中所有字母异位词)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/883995

相关文章

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

C# $字符串插值的使用

《C#$字符串插值的使用》本文介绍了C#中的字符串插值功能,详细介绍了使用$符号的实现方式,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录$ 字符使用方式创建内插字符串包含不同的数据类型控制内插表达式的格式控制内插表达式的对齐方式内插表达式中使用转义序列内插表达式中使用

详解MySQL中JSON数据类型用法及与传统JSON字符串对比

《详解MySQL中JSON数据类型用法及与传统JSON字符串对比》MySQL从5.7版本开始引入了JSON数据类型,专门用于存储JSON格式的数据,本文将为大家简单介绍一下MySQL中JSON数据类型... 目录前言基本用法jsON数据类型 vs 传统JSON字符串1. 存储方式2. 查询方式对比3. 索引

MySQL字符串常用函数详解

《MySQL字符串常用函数详解》本文给大家介绍MySQL字符串常用函数,本文结合实例代码给大家介绍的非常详细,对大家学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql字符串常用函数一、获取二、大小写转换三、拼接四、截取五、比较、反转、替换六、去空白、填充MySQL字符串常用函数一、

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

MySQL 获取字符串长度及注意事项

《MySQL获取字符串长度及注意事项》本文通过实例代码给大家介绍MySQL获取字符串长度及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 获取字符串长度详解 核心长度函数对比⚠️ 六大关键注意事项1. 字符编码决定字节长度2

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使