面试算法32:有效的变位词

题目

给定两个字符串s和t,请判断它们是不是一组变位词。在一组变位词中,它们中的字符及每个字符出现的次数都相同,但字符的顺序不能相同。例如,"anagram"和"nagaram"就是一组变位词。

分析

如果只考虑英文字母,则用数组模拟哈希表先考虑字符串中只包含英文小写字母的情形。由于英文小写字母只有26个,因此可以用一个数组来模拟哈希表。

public class Test {public static void main(String[] args) {boolean anagram = isAnagram("anagram", "nagaram");System.out.println(anagram);}public static boolean isAnagram(String str1, String str2) {if (str1.length() != str2.length()) {return false;}int[] counts = new int[26];for (char ch : str1.toCharArray()) {counts[ch - 'a']++;}for (char ch : str2.toCharArray()) {if (counts[ch - 'a'] == 0) {return false;}counts[ch - 'a']--;}return true;}
}

哈希表方法:

public class Test {public static void main(String[] args) {boolean anagram = isAnagram("anagram", "nagaram");System.out.println(anagram);}public static boolean isAnagram(String str1, String str2) {if (str1.length() != str2.length()) {return false;}Map<Character, Integer> counts = new HashMap<>();for (char ch : str1.toCharArray()) {counts.put(ch, counts.getOrDefault(ch, 0) + 1);}for (char ch : str2.toCharArray()) {if (!counts.containsKey(ch) || counts.get(ch) == 0) {return false;}counts.put(ch, counts.get(ch) - 1);}return true;}
}

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

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

相关文章

【OpenCV实现图片以及视频的读取、显示、保存以及绘图函数】

文章目录 图片视频从文件读取视频保存一个视频绘图函数 图片 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个广泛应用于计算机视觉和图像处理领域的开源库。它提供了丰富的图像处理工具和算法&#xff0c;使得开发者能够轻松实现各种图像处理任务。…

科普丨语音芯片烧录流程概述

语音芯片的烧录是将特定的固件或软件加载到芯片中&#xff0c;以使其能够执行特定的语音处理功能。以下是一般的语音芯片烧录过程&#xff1a; 1. 准备固件或软件&#xff1a;开发人员需要编写或获取特定的固件或软件&#xff0c;这些固件或软件包含了语音处理算法和功能的代码…

win11的下载地址,方便查找

win11的下载地址&#xff0c;收藏方便查找 www.microsoft.com/zh-cn/software-download/windows11/

【周末闲谈】VR新视界,“眼”见未来

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言&#xff0c;模仿还是超越&#xff1f; ✨第二周 畅想AR 文章目录 系列目录前言虚拟现实(VR)技术虚拟现实技术的原理虚拟现实技术发…

高精度时间测量(TDC)电路MS1022

MS1022 是一款高精度时间测量电路&#xff0c;内部集成了模拟比 较器、模拟开关、施密特触发器等器件&#xff0c;从而大大简化了外 围电路。同时内部增加了第一波检测功能&#xff0c;使抗干扰能力大 大提高。通过读取第一个回波脉冲的相对宽度&#xff0c;用户可以获 得接…

laravel的默认首页怎么改-laravel框架默认欢迎页面如何修改

laravel的默认首页怎么改 搭建好的laravel的默认首页怎么改 我们有两种改动方式&#xff1a; 第一种修改默认路由&#xff1a; 下一步是要移除Laravel应用程序默认的欢迎页路由。这个路由可以在routes/web.php文件的顶部找到&#xff0c;看起来类似于以下代码&#xff1a; …

Cypress 与 Selenium WebDriver

功能测试自动化工具的王座出现了新的争夺&#xff1a;Cypress.io。赛普拉斯速度快吗&#xff1f;是的。赛普拉斯是交互式的吗&#xff1f;是的。赛普拉斯可靠吗&#xff1f;你打赌。最重要的是……这很酷&#xff01; 但 Cypress 是Selenium WebDriver的替代品吗&#xff1f;S…

React 中的 useState() 是什么?

在 React 中&#xff0c;useState() 是一个用于在函数组件中声明状态的 Hook。它是 React 16.8 引入的一种新的状态管理方式。 useState() 函数返回一个数组&#xff0c;其中包含两个元素&#xff1a;当前的状态值和一个更新状态值的函数。用数组的解构赋值来获取这两个元素。…

CentOS 7 中安装Kafka

文章目录 安装JDK解压环境变量验证 安装ZooKeeper下载解压环境变量配置启动开放端口 安装Kafka下载解压配置启动 CentOS 7.6 JDK 1.8 ZooKeeper 3.5.7 Kafka 2.11-2.4.0 安装JDK 解压 # 解压 tar -xzvf jdk-8u181-linux-x64.tar.gz mv jdk1.8.0_181 /usr/local/jdk1.8环境变量…

OpenGL —— 2.7、绘制多个自旋转的贴图正方体(附源码,glfw+glad)

源码效果 C源码 纹理图片 需下载stb_image.h这个解码图片的库&#xff0c;该库只有一个头文件。 具体代码&#xff1a; vertexShader.glsl #version 330 corelayout(location 0) in vec3 aPos; layout(location 1) in vec2 aUV;out vec2 outUV;uniform mat4 _modelMatrix; …

微信小程序进阶——Flex弹性布局轮播图会议OA项目(首页)

目录 一、Flex弹性布局 1.1 什么是Flex弹性布局 1.1.1 详解 1.1.2 图解 1.1.3 代码演示效果 1.2 Flex弹性布局的核心概念 1.3 Flex 弹性布局的常见属性 1.4 Flex弹性布局部分属性详解 1.4.1 flex-direction属性 1.4.2 flex-wrap属性 1.4.3 flex-flow属性 1.4.4 ju…

DFS(分布式文件系统)与 DFSR(分布式文件系统复制)的区别

DFS&#xff08;分布式文件系统&#xff09;和 DFSR&#xff08;分布式文件系统复制&#xff09;是两种不同的技术&#xff0c;尽管它们在名称上有一些相似之处&#xff0c;但它们的用途和功能有所不同。 DFS&#xff08;分布式文件系统&#xff09; DFS 是一种用于创建和管理…

Win10系统开机启动文件夹在哪里找?

Win10系统开机启动文件夹在哪里找&#xff1f;Win10系统开机启动文件夹是一个非常重要的目录&#xff0c;它决定了电脑在开机的时候&#xff0c;会有哪些应用程序是自动启动。但是&#xff0c;很多新手用户不知道Win10电脑内开机启动文件夹的具体位置&#xff0c;下面小编介绍开…

eNSP笔记②

动态路由 RIP [适用于小型网络] 静态路由是加上非直连的网段&#xff0c;动态路由是加上直连的网段 动态路由就是要宣告它要去的网段&#xff0c;在图中可以看到&#xff0c;一台路由需要宣告两个网段&#xff0c;路由A分别宣告10.0.0.0与192.168.1.0&#xff0c;路由B宣告10.…

ArcGIS在VUE框架中的构建思想

项目快要上线了&#xff0c;出乎意料的有些空闲时间。想着就把其他公司开发的一期代码里面&#xff0c;把关于地图方面的代码给优化一下。试运行的时候&#xff0c;客户说控制台有很多飘红的报错&#xff0c;他们很在意&#xff0c;虽然很不情愿&#xff0c;但能改的就给改了吧…

JSX的本质

一、本质 React.createElement即h函数&#xff0c;返回vnode第一个参数&#xff0c;可能是组件&#xff0c;也可能是html tag组件名&#xff0c;首字母必须大写&#xff08;React规定&#xff09; 二、babel试一试 &#xff08;babel集成了jsx的编译环境&#xff09; // JSX…

Java:SpringBoot实现JDK动态代理和CGLIB动态代理

目录 1. JDK 动态代理2. CGLIB 动态代理总结参考文章 需要代理的对象 // 接口 public interface PayService {void pay(); }// 实现 public class AliPayService implements PayService {Overridepublic void pay() {System.out.println("AliPayService");} }1. JDK…

【反射】Constructor类

Constructor类中包含了构造方法定义的详细信息&#xff0c;可以使用Constructor类中提供的方法来获取构造方法的信息&#xff0c;下面我们先获取Constructor对象&#xff0c;再介绍如何使用Constructor类中的newInstance方法创建对象。 一、准备工作 在src/test/java目录的cn…

自定义反序列化类将LocalDate时间格式转为 LocalDateTime

从前端接收数据反序列化成类,如果时间格式不一致可能会反序列化失败 public class StorageDTO implements Serializable {private static final long serialVersionUID 1L;......//实体类中格式为JsonFormat(pattern "yyyy-MM-dd")JsonDeserialize(using CustomL…

matlab奇技淫巧——绘制三维地图

在数据处理工作中&#xff0c;常常会用到地图的绘制&#xff0c;最常用的自然是绘制平面的区域/全球地图&#xff0c;通过 worldmap(world) % 创建世界地图坐标区域 load coastlines % 导入海岸线数据 plotm(coastlat,coastlon)即可绘制&#xff0c;效果…