做题总结 242. 有效的字母异位词

242. 有效的字母异位词

  • 我的答案
  • 思路优化
  • 出错的知识点(Java)
    • 1、String相关
      • (1)String转换成char数组
      • (2)String不能直接用下标访问
    • 2、HashMap 相关
      • (1)初始化
      • (2)由key得到value
      • (3)遍历map - 增强for循环
      • (4)数组和hashmap的length区别
      • (5)getOrDefault方法

我的答案

class Solution {public boolean isAnagram(String s, String t) {//String变成数组,toCharArray //String不能用下标访问char[] ss = s.toCharArray();char[] tt = t.toCharArray();HashMap<Character,Integer> map = new HashMap<Character, Integer>();//sfor(int i=0; i<ss.length; i++) {if(!map.containsKey(ss[i])) {//不存在map.put(ss[i], 1);} else {map.put(ss[i],map.get(ss[i])+1);}}//tfor(int i=0; i<tt.length; i++) {if(!map.containsKey(tt[i])) {//不存在return false;} else {map.put(tt[i],map.get(tt[i])-1);//!!请注意要加一 不能++}}//数组和hashmap的lengthfor(Character key : map.keySet()) {if(map.get(key) != 0) {return false;}}return true;}
}

在这里插入图片描述

思路优化

参考代码随想录

题目“s 和 t 仅包含小写字母”,且字母小a到字母小b的ASCII码是连续的(a是97)
什么时候用数组、set、map?
在哈希值比较小、范围比较小(26个字母)的情况下用数组就可以。

出错的知识点(Java)

1、String相关

(1)String转换成char数组

toCharArray方法

String s="XXXXX";
char[] ss = s.toCharArray();

(2)String不能直接用下标访问

String s 可以通过 s.charAt(i) 访问

public char charAt(int index)

2、HashMap 相关

(1)初始化

首先注意<key , value>中的 key 和 value 都是 Object。所以 要用到包装类:char->Character, int->Integer。

HashMap<Character,Integer> map = new HashMap<Character, Integer>();

(2)由key得到value

get方法
public Value get(Object key)

map.put(ss[i],map.get(ss[i])+1);

调用函数的时候向上转型?或者装箱拆箱。传进去的ss[i]是char,但是get方法里使用Object接收的。
这里的 map.get(ss[i])+1) 也不可以用自增运算符++代替。 Integer对象执行++操作之后是返回一个新的Integer对象。

https://www.yisu.com/zixun/195481.html

我猜测这里的+1其实1自动装箱为对象然后进行运算。但是这两天IDEA到期了,还看不了源码。

(3)遍历map - 增强for循环

//HashMap<Character,Integer> map = new HashMap<Character, Integer>();
for(Character key : map.keySet()) {if(map.get(key) != 0) {return false;}}

(4)数组和hashmap的length区别

数组 char[] a 的长度为 a.length
Hashmap map的长度为 map.length()
Hashmap 是一个类,访问类方法得到它的长度,类方法的访问需要加括号。然而数组char[]不是类。

(5)getOrDefault方法

public V getOrDefault(Object key, V defaultValue)
返回指定键映射到的值,如果此映射不包含键的映射, defaultValue

请看下面代码的逻辑:如果 map中没有键 tt[i] ,那么就加入 map,value设置为1。如果本来就存在键 tt[i] ,value加一。其实就是计数。

//输入String t;
//char[] tt = t.toCharArray();
//HashMap<Character,Integer> map = new HashMap<Character, Integer>();for(int i=0; i<ss.length; i++) {if(!map.containsKey(ss[i])) {//不存在map.put(ss[i], 1);} else {map.put(ss[i],map.get(ss[i])+1);}}

这一段代码可以用 getOrDefault 方法优化

 for (int i = 0; i < s.length(); i++) {char ch = s.charAt(i);map.put(ch, table.getOrDefault(ch, 0) + 1);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/286532.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue导出element表格,xlsx和xlsx-style生成xlsx文件并修改样式

1.下载依赖 npm install xlsx --save npm install file-saver --save npm install xlsx-style --save2.先修改xlsx-style的源码&#xff0c;一旦引入xlsx-style则会报错 xlsx-style使用中常见问题及解决办法&#xff1a; xlsx-style使用中常见问题及解决办法-CSDN博客 在\n…

Office批量打印助手绿色版 Excel批量打印 Word 批量打印软件-供大家学习研究参考

功能亮点 批量打印Word文件和Excel工作簿。 请确保已安装.NET Framework 4.0或.NET Framework 4.0 Client Profile。 可以批量打印Word文件和Excel工作簿。交互逻辑简化。 支持WPS文档和WPS表格的打印。 使用系统默认的文档和表格打开方式打印&#xff0c;避免出现RPC服务…

MyBatis的查询方法!!!

准备工作&#xff1a;1.创建一个maven工程&#xff0c;然后将pojo类导入到项目中去。 2.导入依赖到pom.xml文件中 3.在resources中创建log4j.properites和mybatis-config.xml 4.创建UserMapper接口和UserMapper.xml文件 5.创建测试类MyBatisTest 1.创建Maven工程&#xff0c;还…

TensorFlow 2 和 Keras 之间的区别总结

1、什么是TensorFlow 2 TensorFlow 2是谷歌开源的一款深度学习框架&#xff0c;于2019年发布&#xff0c;并且在同年10月1日发布了TensorFlow 2.0.0正式稳定版。这款框架被很多企业与创业公司广泛用于自动化工作任务和开发新系统。 TensorFlow 2在分布式训练支持、可扩展的生…

从Gitee克隆项目、启动方法

从gitee克隆VUE项目到本地后&#xff0c;不能直接运行&#xff0c;需要进行npm install安装node_modules文件夹里面的内容&#xff0c;因为在git上传的时候&#xff0c;一般都会过滤到node_modules中的依赖文件。 安装依赖以后&#xff0c;启动通过npm run serve启动项目出错。…

LoadRunner-Controller

Controller场景设计Controller打开方式Design设计场景 Run-场景运行介绍简单图表分析虚拟用户图表事务响应时间 Controller场景设计 之所以把脚本放到Controller是因为vug没有一个性能指标的监控&#xff1b;而且你要达到持续模拟多个用户你得通过修改运行次数达到这种多用户的…

SD-WAN组网案例:异地组网跨境访问

根据业务的发展和公司的扩张&#xff0c;越来越多企业开始设立分公司或者开设海外办事处&#xff0c;这时候异地网络访问成为一个令人头痛的问题。本文将通过一个案例展示如何利用SD-WAN组网解决异地组网和跨境访问的问题。 背景&#xff1a; 该客户在三个相距较远的地区设有工…

全国国控监测点点位数据,shp/excel格式,已可视化

基本信息. 数据名称: 全国国控监测点点位数据 数据格式: shpexcel 时间版本&#xff1a;2023年 数据几何类型: 点 数据精度&#xff1a;全国 数据坐标系: WGS84 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1province省名称2city城市…

性能测试-LoadRunner

一. Load Runner 脚本录制 1.1 了解 WebTours系统 &#xff08;1&#xff09;WebTours如何启动 在浏览器中输入ip端口号/WebTours就可以访问到了 &#xff08;2&#xff09;WebTours 配置 在 conf 中的 http.conf 中可以看到端口号:1080 1.2 脚本录制 1. 创建一个脚本 2. …

腾讯云debian服务器的连接与初始化

目录 1. 远程连接2. 软件下载3. 设置开机自启动 1. 远程连接 腾讯云给的服务器在安装好系统之后&#xff0c;只需要在防火墙里面添加一个白名单&#xff08;ip 或者域名&#xff09;就能访问了。 防火墙添加本机WLAN的IPv4白名单&#xff0c;本地用一个远程工具连接&#xff…

JavaEE:线程池精讲

目录 一.什么是线程池 二.线程池的实现原理 &#x1f388;为什么要有工厂模式&#xff1f; 三.线程池的构造方法解读 &#x1f388;线程池的拒绝策略 四.自己实现一个线程池 一.什么是线程池 简单来说&#xff0c;线程池就好比一块鱼塘&#xff0c;鱼塘中的每条鱼就是一个线程…

Oracle的学习心得和知识总结(三十)| OLTP 应用程序的合成工作负载生成器Lauca论文翻译及学习

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《Oracle Database SQL Language Reference》 2、参考书籍&#xff1a;《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…