剑指offer032---有效的变位词(简单难度)

简介: 剑指offer032---有效的变位词(简单难度)

目录

题目概述(简单难度)

题目链接

点我进入leetcode

思路与代码

思路展现

这道题目我们使用哈希

代码示例

class Solution {
    public boolean isAnagram(String s, String t) {
    if(s.length() != t.length() || s.equals(t)) {
        return false;
    }
     HashMap<Character,Integer> hash = new HashMap<>();
     for(char ch : s.toCharArray()) {
         //获取key所对应的value值,如果没有获得默认值,此处我们设置的默认值为0
         Integer count = hash.getOrDefault(ch , 0);
         hash.put(ch,count + 1);
     }
     for(char ch1 :t.toCharArray()) {
         //获取key所对应的value值,如果没有获得默认值,此处我们设置的默认值为0
         //但是注意此处如果s中的字符t中都有,那么此处count的值为0
         Integer count = hash.getOrDefault(ch1 , 0);
         //一旦在循环获取count的时候发现有一次为0,就说明不是变位词
         if(count == 0) {
           return false;
         }
         //遍历 t 中字符,对 s 中的字符进行抵消,如果不能抵消,则说明 t 不是变位词
         hash.put(ch1,count - 1);
     }
     //能走到这一步说明此时都抵消完毕了
     return true;
    }
}

2.png

代码解析


这道题目我认为比较巧妙的是运用了getOrDefault方法,因为这个方法首先运用在s字符串的时候是为了先给s这个字符串中的每个字符赋值给一个初始的value值,为0,方便后期对每个字符的计数


第二次使用我们的getOrDefault方法是在t中,因为之前我们已经统计了s中每个字符出现的次数,如果t中的每个字符都在s中出现过且次数相同,那么我们在t中使用getOrDefault方法的时候肯定不会获得0值,因为getOrDefault方法只有在key值也就是当前hash中没有某个字符的时候才会默认付给这个字符一个值为0的value,所以说有了我们后面的判断,当这个count为0的时候,直接返回false,说明t中一定有s中没有的字符,不符合题意.



相关文章
|
9月前
|
云安全 人工智能 安全
阿里云欧阳欣:AI时代下的安全新范式
阿里云欧阳欣:AI时代下的安全新范式
|
监控 安全 测试技术
我们为什么要API管理系统呢?
API 管理系统通过接口标准化与复用、简化开发流程、版本管理、监控与预警、访问控制、数据加密、安全审计、集中管理与共享、协作开发、快速对接外部系统和数据驱动的决策等多方面优势,显著提高开发效率、增强系统可维护性、提升系统安全性、促进团队协作与沟通,并支持业务创新与扩展。
|
并行计算 Linux 开发工具
物体检测框架YoloDotNet初体验
【11月更文挑战第3天】YoloDotNet 是一个基于 .Net 平台的物体检测框架,支持多种视觉任务,包括物体检测、分类、OBB 检测、分割和姿态估计。安装过程较为复杂,需要配置 CUDA 和 CUDNN 支持 GPU 加速。代码简洁易用,检测速度快且准确,适用于实时应用。该框架跨平台、开源免费,适合熟悉 .Net 的开发者使用。
625 4
|
12月前
|
Ubuntu 网络协议 Linux
快速部署WSL(Windows Subsystem for Linux)
WSL提供了一种轻量级的方法,使开发者能够在Windows上无缝运行Linux环境。通过本文介绍的步骤,可以快速安装、配置和使用WSL,以满足开发和测试的需求。
2100 8
|
中间件
小满nestjs(第十二章 nestjs 中间件)
中间件是在路由处理程序 之前 调用的函数。 中间件函数可以访问请求和响应对象
357 67
小满nestjs(第十二章 nestjs 中间件)
|
PyTorch 算法框架/工具 C++
windows上编译安装pytorch的c++扩展
windows上编译安装pytorch的c++扩展
307 0
|
SQL 关系型数据库 MySQL
MyBatis-plus配置自定义SQL(执行用户传入SQL)
MyBatis-plus配置自定义SQL(执行用户传入SQL)
979 0
|
物联网 开发者 Python
HaaS506硬件规格
HaaS 506是一款经过阿里云HaaS团队认证的高性能、多连接的物联网开发板。
743 2
|
人工智能 运维 架构师
阿里云课程体系,准备考试的赶紧收藏
伴随人工智能、大数据、云架构等等新技术对不断升温,如何用技术降低成本、提高业务能力已经成为了这个时代开发者、架构师所必须思考的问题
294 0
阿里云课程体系,准备考试的赶紧收藏