【算法系列-哈希表】有效的字母异位词

[复制链接]
发表于 2026-1-11 11:47:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
【算法系列-哈希表】有效的字母异位词

欢迎来到【算法系列】第三弹  哈希表,接下来我们将围绕哈希表这范例的算法题举行分析与训练!一起加油吧!!( •̀ ω •́ )✧✨

  
1. 有效的字母异位词(LeetCode 242)

【标题链接】 有效的字母异位词 LeetCode 242
1.1 思绪分析

   构建哈希表来办理标题
  界说一个数组,数组长度为26,对应26个字母 这个数组的索引下标 由 字符串中的字符 - ‘a’ 转化而来('a’的ASCII码值为97),数组元素代表着这个字母在字符串中的词频
  1.2 解题过程

   对 s 字符串举行遍历,每遍历到 s 字符串中的新字符,数组对应位置下的元素值 + 1;
  对 t 字符串举行遍历,每遍历到 t 字符串中的新字符,数组对应位置下的元素值 - 1;
  对数组举行遍历,若遍历到的数组元素 不即是 0,表现s字符串与t字符串之间存在数目不等的字母,返回false ;
  上述循环竣事,则返回true
  1.3 代码示例

  1. class Solution {
  2.    
  3.    
  4.     public boolean isAnagram(String s, String t) {
  5.    
  6.    
  7.         int[] arr = new int[26];
  8.         for (int i = 0;i < s.length();i++) {
  9.    
  10.    
  11.             arr[s.charAt(i) - 'a']++;
  12.         }
  13.         for (int i = 0;i < t.length();i++) {
  14.    
  15.    
  16.             arr[t.charAt(i) - 'a']--;
  17.         }
  18.         for (int i = 0;i < arr.length;i++) {
  19.    
  20.    
  21.             if (arr[i] != 0) {
  22.    
  23.    
  24.                 return false;
  25.             }
  26.         }
  27.         return true;
  28.     }
  29. }
复制代码
把握相识题思绪后,提供以下几道范例相似的题用来训练
2. 赎金信(LeetCode 383)

【标题链接】 赎金信 LeetCode 383
2.1 思绪分析

   思绪与上一题类似,只是末了在判定的时间必要清撤消词频小于0的环境(由于magazine中大概存在ransomNote没有的字符)
  2.2 代码示例

  1. class Solution {
  2.    
  3.    
  4.     public boolean canConstruct(String ransomNote, String magazine) {
  5.    
  6.    
  7.         
  8.         int[] arr = new int[26];
  9.         for (int i
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表