有效的变位词

2024-05-25 06:12
文章标签 有效 变位

本文主要是介绍有效的变位词,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        如果哈希表的键的取值范围是固定的,并且范围不是很大,则可以用数组来模拟哈希表。数组的下标和哈希表的键相对应,而数组的值和哈希表的值相对应。

        英文小写字母只有26个,因此可以用一个数组来模拟哈希表。

class Solution {public boolean isAnagram(String s, String t) {if(s.length() != t.length() || s.equals(t))return false;int[] arr = new int[26];for (char ch : s.toCharArray()){arr[ch - 'a']++;} for (char ch : t.toCharArray()){arr[ch - 'a']--;}for (int a : arr){if(a != 0)return false;}return true;}
}

当然也可以用排序的方法做:首先判断字符串是否相等、长度是否不一致,如果相等或者长度不一致则直接返回 false,反之则继续判断两个字符串排序后是否相等。我们可以对字符串s和t分别排序,看排序后的字符串是否相等。

class Solution {public boolean isAnagram(String s, String t) {if (s.length() != t.length() || s.equals(t)) {return false;}char[] str1 = s.toCharArray();char[] str2 = t.toCharArray();Arrays.sort(str1);Arrays.sort(str2);return Arrays.equals(str1, str2);}
}

        一个unicode字符长度为16位,可以表示65536个字符。当然可以继续用长度为65536的数组来模拟哈希表,不过不建议,有点浪费内存。

        此时可以使用真正的哈希表Hashmap。

class Solution {public boolean isAnagram(String s, String t) {if (s.length() != t.length() || s.equals(t)) {return false;}Map<Character, Integer> counts = new HashMap<>();for (char ch : s.toCharArray()) {counts.put(ch, counts.getOrDefault(ch, 0) + 1);}for (char ch : t.toCharArray()) {if (!counts.containsKey(ch) || counts.get(ch) == 0){return false;}counts.put(ch,counts.get(ch) - 1);}return true;}
}

这篇关于有效的变位词的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

浅谈主机加固,六种有效的主机加固方法

在数字化时代,数据的价值不言而喻,但随之而来的安全威胁也日益严峻。从勒索病毒到内部泄露,企业的数据安全面临着前所未有的挑战。为了应对这些挑战,一种全新的主机加固解决方案应运而生。 MCK主机加固解决方案,采用先进的安全容器中间件技术,构建起一套内核级的纵深立体防护体系。这一体系突破了传统安全防护的局限,即使在管理员权限被恶意利用的情况下,也能确保服务器的安全稳定运行。 普适主机加固措施:

损坏SD数据恢复的8种有效方法

SD卡被用于许多不同的产品来存储重要数据,如图片和重要的商业文件。如果您的SD卡坏了,您需要SD数据恢复来获取您的信息。通过从损坏的SD卡中取回数据,您可以确保重要文件不会永远丢失,这对于工作或个人原因是非常重要的。 有许多东西会损坏SD卡,因此有必要从中恢复数据。处理不当,如打碎或沾湿,会使卡无法使用。文件系统中的错误或错误倾倒都可能导致损坏。另一个需要好的SD卡恢复软件的常见问题是意外删除文

win7系统中C盘空间缩水的有效处理方法

一、深度剖析和完美解决   1、 休眠文件 hiberfil.sys :   该文件在C盘根目录为隐藏的系统文件,隐藏的这个hiberfil.sys文件大小正好和自己的物理内存是一致的,当你让电脑进入休眠状态时,Windows 7在关闭系统前将所有的内存内容写入Hiberfil.sys文件。   而后,当你重新打开电脑,操作系统使用Hiberfil.sys把所有信息放回内存,电脑

双指针(5)_单调性_有效三角形的个数

个人主页:C++忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C++忠实粉丝 原创 双指针(5)_单调性_有效三角形的个数 收录于专栏【经典算法练习】 本专栏旨在分享学习C++的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 1. 题目链接: 2.题目描述 : 3.解法 :     解法一(暴力枚举) :     算法思路 :     代码展示 : 暴力枚

如何利用评论进行有效的 ASO

如何利用评论进行有效的ASO的问题的答案通常以“正面评论”一词开始。确实,这句话首先浮现在脑海中。但这个问题的答案包括负面评论、用户体验、提高知名度、评分、根据评论优化应用程序以及许多其他有趣的点。这里几乎没有无聊的统计数据,这些数字也不会让你眼花缭乱。处理评论需要与用户的沟通和互动,需要社交性,甚至需要一点心理学。在本文中,我们将讨论评论对应用程序的总体影响,以及它们对 ASO 优化的

六种msvcp110.dll丢失修复的方法分享,有效快速修复msvcp110.dll丢失

在日常使用电脑的过程中,我们可能会遭遇各种程序运行错误,其中“msvcp110.dll丢失”是一种非常常见的问题。这个问题通常发生在尝试启动某些程序时,系统会弹出一个错误消息,提示“程序无法启动,因为计算机缺少msvcp110.dll”,这可能会让用户感到困惑和无助。幸运的是,这个问题有多种解决方法,本文将指导你通过几种简单的步骤来修复“msvcp110.dll丢失”的问题,让你的程序回到正常运行

app提交到腾讯开发平台,提示无法获取签名信息,请上传有效包(110506)

最近提交APP时遇到的,一般情况下是因为打包时至勾选v2没有勾选v1的原因,如下图: 这个时候将v1勾选即可。 但是在打包时ˉv1和v2都勾选了也可能会出现这个报错,那就要看一下gradle的 minSdkVersion,如果这个版本在24-26之间也可能会提示这个错误,所以降低这个版本就可以了

信号有效带宽

根据傅里叶变换可以知道信号带宽是无穷大的,这对实际应用是帮助不大的,所以有了有效带宽的概念,可能大家知道常用的经验公式:O.35/Tr或者0.5/Tr等,那这个公式是怎么来的呢?有效带宽又是什么含义呢? 首先来看一个RC低通滤波器,如下: 其上升时间Tr为: 该滤波器的传递函数为: H(s)=1/(RCS+1) 式中S=2πf,转换为频率f的函数为: H(f)=1/(R

工作效率的提升——如何高效沟通,有效降低沟通成本

如果你的上班时间是9点到18点,除去午休时间1.5h,剩余7.5h,那么你真正的有效工作时间又为多少呢? 如果你是一个财政/公司流程管理的知识产权审核人或销售许可申请负责人/销售/运营,沟通就是你的主要工作内容,如何更加清晰有效,直白明了,让不明事件原委的申请人或者新人,快速的了解需要自己准备或者更改的点,进而提高自己的工作效率呢? 如果你是测试人员/产品经理/开发人员,如何尽快让大家同频道沟

如何在Linux系统中有效杀毒

安装杀毒:sudo apt-get install clamav更新病毒库:sudo freshclamlinux扫描:sudo clamscan -r /home查看IP:ip addr | grep inet 一、安装杀毒软件 在Linux系统中,杀毒软件的种类比较丰富,而且很多杀毒软件都是免费的。比如,ClamAV、Sophos、Bitdefender等等。这里我们以ClamAV